mirror of
https://github.com/github/codeql.git
synced 2025-12-17 01:03:14 +01:00
30 lines
869 B
Python
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)
|