summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuergen Bocklage-Ryannel <jbocklage-ryannel@luxoft.com>2018-11-01 16:21:28 -0400
committerJuergen Bocklage-Ryannel <jbocklage-ryannel@luxoft.com>2018-11-01 17:38:20 -0400
commit57421d7cfd220bbdbcb18345f532959e28e87fe8 (patch)
tree6d0004d891a8be202cc75448107308c7b48b6d84
parent4131d2a2d7ba644af4fb632601f2f15853f621a7 (diff)
downloadqtivi-qface-57421d7cfd220bbdbcb18345f532959e28e87fe8.tar.gz
add command line interface to qface
-rw-r--r--qface/cli.py40
1 files changed, 40 insertions, 0 deletions
diff --git a/qface/cli.py b/qface/cli.py
new file mode 100644
index 0000000..f0b06b0
--- /dev/null
+++ b/qface/cli.py
@@ -0,0 +1,40 @@
+import sys
+import click
+from path import Path
+from qface.generator import FileSystem, RuleGenerator
+from qface.watch import monitor
+
+
+def run(config, src, dst, force=False, features=None):
+ project = Path(dst).name
+ system = FileSystem.parse(src)
+ template_dir = config.dirname() / 'templates'
+
+ context = {
+ 'dst': dst,
+ 'system': system,
+ 'project': project,
+ 'features': features,
+ }
+
+ generator = RuleGenerator(template_dir, destination=dst, context=context, features=features, force=force)
+ generator.process_rules(config, system)
+
+
+@click.command()
+@click.option('--config', '-c', type=click.Path(exists=True))
+@click.option('--reload/--no-reload', default=False)
+@click.option('--features', '-f', multiple=True)
+@click.option('--force/--no-force', default=True, help="Force writing of target files, ignores preserve")
+@click.argument('src', nargs=-1, type=click.Path(exists=True))
+@click.argument('dst', nargs=1, type=click.Path(exists=False, file_okay=False))
+def app(config, src, dst, features, reload, force):
+ """Takes several files or directories as src and generates the code
+ in the given dst directory."""
+ config = Path(config)
+ if reload:
+ argv = sys.argv.copy()
+ argv.remove('--reload')
+ monitor(config.dirname(), src, dst, argv)
+ else:
+ run(config, src, dst, force)