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
« prev ^ index » next coverage.py v7.8.0, created at 2025-04-17 01:37 +0200
1"""Spec generator CLI tool
3This tool is supposed to be invoked on the _host_ (developer) system
4to generate developer specs (python stubs, typescript interfaces etc)
5"""
7import os
8import sys
10sys.path.insert(0, os.path.abspath(os.path.dirname(__file__) + '/../../../app'))
12import gws.lib.cli as cli
14import gws.spec.generator.generator as generator
16USAGE = """
17GWS Spec Compiler
18~~~~~~~~~~~~~~~~~
20 python3 spec.py <output-directory> <options>
22Options:
24 -root <dir>
25 application root directory ('app')
27 -manifest <path>
28 path to MANIFEST.json
30 -v
31 verbose logging
32"""
35def main(args):
36 out_dir = args.get(1)
37 if not out_dir:
38 cli.fatal('output directory required')
40 os.makedirs(out_dir, exist_ok=True)
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'))
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
61if __name__ == '__main__':
62 cli.main('spec', main, USAGE)