Files
codeql/swift/codegen/lib/generator.py
Paolo Tranquilli 64496b4c97 Swift: cleanup and some docstrings for codegen
Also added code generation and clang formatting to the pre-commit
configuration.
2022-04-14 11:27:41 +02:00

30 lines
869 B
Python

""" generator script scaffolding """
import argparse
import logging
import sys
from . import options, render
def _parse(tags):
parser = argparse.ArgumentParser()
for opt in options.get(tags):
opt.add_to(parser)
ret = parser.parse_args()
log_level = logging.DEBUG if ret.verbose else logging.INFO
logging.basicConfig(format="{levelname} {message}", style='{', level=log_level)
return ret
def run(*generators, tags=None):
""" run generation functions in `generators`, parsing options tagged with `tags` (all if unspecified)
`generators` should be callables taking as input an option namespace and a `render.Renderer` instance
"""
opts = _parse(tags)
renderer = render.Renderer(dryrun=opts.check)
for g in generators:
g(opts, renderer)
sys.exit(1 if opts.check and renderer.done_something else 0)