|
1 | 1 | #!/usr/bin/env python3 |
2 | | -""" Driver script to run all checked in code generation """ |
| 2 | +""" Driver script to run all code generation """ |
| 3 | + |
| 4 | +import argparse |
| 5 | +import logging |
| 6 | +import pathlib |
| 7 | +import sys |
| 8 | +import importlib |
| 9 | +import types |
| 10 | +import typing |
| 11 | + |
| 12 | +from swift.codegen.lib import render, paths |
| 13 | +from swift.codegen.generators import generate |
| 14 | + |
| 15 | + |
| 16 | +def _parse_args() -> argparse.Namespace: |
| 17 | + p = argparse.ArgumentParser() |
| 18 | + p.add_argument("--generate", type=lambda x: x.split(","), default=["dbscheme", "ql"]) |
| 19 | + p.add_argument("--verbose", "-v", action="store_true") |
| 20 | + p.add_argument("--swift-dir", type=_abspath, default=paths.swift_dir) |
| 21 | + p.add_argument("--schema", type=_abspath, default=paths.swift_dir / "codegen/schema.yml") |
| 22 | + p.add_argument("--dbscheme", type=_abspath, default=paths.swift_dir / "ql/lib/swift.dbscheme") |
| 23 | + p.add_argument("--ql-output", type=_abspath, default=paths.swift_dir / "ql/lib/codeql/swift/generated") |
| 24 | + p.add_argument("--ql-stub-output", type=_abspath, default=paths.swift_dir / "ql/lib/codeql/swift/elements") |
| 25 | + p.add_argument("--ql-format", action="store_true", default=True) |
| 26 | + p.add_argument("--no-ql-format", action="store_false", dest="ql_format") |
| 27 | + p.add_argument("--codeql-binary", default="codeql") |
| 28 | + p.add_argument("--cpp-output", type=_abspath) |
| 29 | + p.add_argument("--cpp-namespace", default="codeql") |
| 30 | + p.add_argument("--trap-affix", default="Trap") |
| 31 | + p.add_argument("--cpp-include-dir", default="swift/extractor/trap") |
| 32 | + return p.parse_args() |
| 33 | + |
| 34 | + |
| 35 | +def _abspath(x: str) -> pathlib.Path: |
| 36 | + return pathlib.Path(x).resolve() |
| 37 | + |
| 38 | + |
| 39 | +def run(): |
| 40 | + opts = _parse_args() |
| 41 | + log_level = logging.DEBUG if opts.verbose else logging.INFO |
| 42 | + logging.basicConfig(format="{levelname} {message}", style='{', level=log_level) |
| 43 | + exe_path = paths.exe_file.relative_to(opts.swift_dir) |
| 44 | + for target in opts.generate: |
| 45 | + generate(target, opts, render.Renderer(exe_path)) |
3 | 46 |
|
4 | | -from swift.codegen.generators import generator, dbschemegen, qlgen |
5 | 47 |
|
6 | 48 | if __name__ == "__main__": |
7 | | - generator.run(dbschemegen, qlgen) |
| 49 | + run() |
0 commit comments