Coverage for gws-app/gws/spec/spec.py: 0%

25 statements  

« prev     ^ index     » next       coverage.py v7.8.0, created at 2025-04-17 01:37 +0200

1"""Spec generator CLI tool 

2 

3This tool is supposed to be invoked on the _host_ (developer) system 

4to generate developer specs (python stubs, typescript interfaces etc) 

5""" 

6 

7import os 

8import sys 

9 

10sys.path.insert(0, os.path.abspath(os.path.dirname(__file__) + '/../../../app')) 

11 

12import gws.lib.cli as cli 

13 

14import gws.spec.generator.generator as generator 

15 

16USAGE = """ 

17GWS Spec Compiler 

18~~~~~~~~~~~~~~~~~ 

19  

20 python3 spec.py <output-directory> <options> 

21 

22Options: 

23 

24 -root <dir> 

25 application root directory ('app') 

26 

27 -manifest <path> 

28 path to MANIFEST.json 

29 

30 -v 

31 verbose logging 

32""" 

33 

34 

35def main(args): 

36 out_dir = args.get(1) 

37 if not out_dir: 

38 cli.fatal('output directory required') 

39 

40 os.makedirs(out_dir, exist_ok=True) 

41 

42 try: 

43 generator.generate_and_store( 

44 out_dir=out_dir, 

45 root_dir=args.get('root'), 

46 manifest_path=args.get('manifest'), 

47 debug=args.get('v')) 

48 

49 except generator.Error as e: 

50 cli.error('-' * 40) 

51 cli.error(f'SPEC GENERATOR ERROR: {e.args[0]}') 

52 cli.error('-' * 40) 

53 raise 

54 except Exception as e: 

55 cli.error('-' * 40) 

56 cli.error(f'UNHANDLED SPEC GENERATOR ERROR: {e!r}') 

57 cli.error('-' * 40) 

58 raise 

59 

60 

61if __name__ == '__main__': 

62 cli.main('spec', main, USAGE)