Coverage for src/lazy_imports_lite/__main__.py: 100%

23 statements  

« prev     ^ index     » next       coverage.py v7.4.1, created at 2024-02-12 09:19 +0100

1import argparse 

2import ast 

3import pathlib 

4import sys 

5 

6from lazy_imports_lite._transformer import TransformModuleImports 

7from lazy_imports_lite._utils import unparse 

8 

9 

10def main(): 

11 parser = argparse.ArgumentParser( 

12 prog="lazy-imports-lite", description="Tool for various file operations." 

13 ) 

14 subparsers = parser.add_subparsers( 

15 title="subcommands", dest="subcommand", help="Available subcommands" 

16 ) 

17 

18 # Subcommand for preview 

19 preview_parser = subparsers.add_parser( 

20 "preview", help="Preview the contents of a file" 

21 ) 

22 preview_parser.add_argument("filename", help="Name of the file to preview") 

23 

24 args = parser.parse_args() 

25 

26 if args.subcommand == "preview": 

27 transformer = TransformModuleImports() 

28 code = pathlib.Path(args.filename).read_text() 

29 tree = ast.parse(code) 

30 new_tree = ast.fix_missing_locations(transformer.visit(tree)) 

31 new_code = unparse(new_tree) 

32 print(new_code) 

33 

34 else: 

35 print( 

36 "Error: Please specify a valid subcommand. Use 'preview --help' for more information.", 

37 file=sys.stderr, 

38 ) 

39 exit(1) 

40 

41 

42if __name__ == "__main__": 

43 main()