diff options
author | Juergen Bocklage-Ryannel <[email protected]> | 2016-09-16 08:33:22 +0200 |
---|---|---|
committer | Juergen Ryannel <[email protected]> | 2016-11-30 10:01:20 +0100 |
commit | 3ae245707dfa4b0f5caa502cbde5ae46b522306b (patch) | |
tree | 3304751eae93269a70a899d17737a590fa94f5c6 /cli.py | |
parent | f26b8cc2b1678a72580b61961f49568b5b33bc1f (diff) |
Added some targets and changed how generators can be called (by name and by path now)
Diffstat (limited to 'cli.py')
-rwxr-xr-x | cli.py | 53 |
1 files changed, 45 insertions, 8 deletions
@@ -8,6 +8,7 @@ from watchdog.observers import Observer from pathlib import Path import time import os +import sys import yaml @@ -86,7 +87,9 @@ class RunScriptChangeHandler(FileSystemEventHandler): return if event.is_directory: return - print(event) + self.run() + + def run(self): sh('python3 {0}'.format(self.script), cwd=self.cwd) @@ -121,19 +124,32 @@ def generate_monitor(runner, generator, input, output): @cli.command() [email protected]('--runner', type=click.File('r')) [email protected]('--reload/--no-reload', default=False) [email protected]('--generator', type=click.Path(exists=True)) [email protected]('--input', type=click.Path(exists=True)) [email protected]('--output', type=click.Path(exists=True)) -def generate(runner, generator, input, output, reload): [email protected]('--runner', type=click.File('r'), help="use the runner YAML file to configure the generation") [email protected]('--reload/--no-reload', default=False, help="if enabled auto-reload the generator on input changes") [email protected]('--generator', help="specifies the generator (either by name or path)") [email protected]('--input', type=click.Path(exists=True), help="specifies the input folder") [email protected]('--output', type=click.Path(exists=True), help="specified the output folder") [email protected]('--list/--no-list', help="lists the available generators") +def generate(runner, generator, input, output, reload, list): + if list: + entries = [e.name for e in Path('generator').iterdir()] + click.echo('generators: {0}'.format(entries)) + sys.exit(0) """run the named generator""" if runner: config = yaml.load(runner) generator = config['generator'] input = config['input'] output = config['output'] - generator = Path(generator).absolute() + if not generator or not input or not output: + print('generator, input and output arguments are required') + sys.exit(-1) + generator = Path('generator') / generator + if not generator.exists(): + generator = Path(generator).absolute() + if not generator.exists(): + print('can not find the specified generator: ' + str(generator)) + sys.exit(-1) input = Path(input).absolute() output = Path(output).absolute() if not reload: @@ -142,6 +158,7 @@ def generate(runner, generator, input, output, reload): _generate_reload(generator, input, output) + def _generate_once(generator, input, output): script = '{0}.py'.format(generator.name) input = Path(input).absolute() @@ -155,11 +172,13 @@ def _generate_reload(generator, input, output): """run the named generator and monitor the input and generator folder""" script = generator / '{0}.py --input {1} --output {2}'.format(generator.name, input, output) event_handler = RunScriptChangeHandler(script, cwd=generator.as_posix()) + event_handler.run() # run always once observer = Observer() observer.schedule(event_handler, generator.as_posix(), recursive=True) observer.schedule(event_handler, input.as_posix(), recursive=True) observer.schedule(event_handler, './qface', recursive=True) observer.start() + try: while True: time.sleep(2) @@ -168,5 +187,23 @@ def _generate_reload(generator, input, output): observer.join() [email protected]('--editable/--no-editable', default=False, help='install editable package') +def install(editable): + """install the script onto the system using pip3""" + script_dir = str(Path(__file__).parent.absolute()) + print(script_dir) + if editable: + sh('pip3 install --editable {0} --upgrade'.format(script_dir)) + else: + sh('pip3 install {0} --upgrade'.format(script_dir)) + + +def uninstall(): + """uninstall the script from the system using pip3""" + sh('pip3 uninstall qface') + + if __name__ == '__main__': cli() |