summaryrefslogtreecommitdiff
path: root/cli/cli.py
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2019-12-01 11:07:59 +0100
committerJules Laplace <julescarbon@gmail.com>2019-12-01 11:07:59 +0100
commitd9c3928e542faabaf8a9cb3d235029939cb65f09 (patch)
tree7f5093e8be5c3473d056c5da4c40947a21ca2b7e /cli/cli.py
utilz
Diffstat (limited to 'cli/cli.py')
-rwxr-xr-xcli/cli.py65
1 files changed, 65 insertions, 0 deletions
diff --git a/cli/cli.py b/cli/cli.py
new file mode 100755
index 0000000..4a1e8e5
--- /dev/null
+++ b/cli/cli.py
@@ -0,0 +1,65 @@
+#!/usr/bin/env python
+
+# --------------------------------------------------------
+# VFRAME Synthetic Data cli
+# --------------------------------------------------------
+
+import click
+
+from app.settings import app_cfg
+from app.utils import logger_utils
+from app.utils.click_factory import ClickSimple
+
+# --------------------------------------------------------
+# Entrypoint
+# --------------------------------------------------------
+
+if __name__ == '__main__':
+
+ import sys
+ import argparse
+
+ # argparse: intercept group
+ argv_tmp = sys.argv
+ sys.argv = sys.argv[:2]
+ ap = argparse.ArgumentParser('\033[1m\033[94mMEGAPIXELS\033[0m')
+ ap.add_argument('group', choices=app_cfg.CLICK_GROUPS.keys())
+ args = ap.parse_args()
+ sys.argv = argv_tmp
+ sys.argv.pop(1) # remove group
+
+ # special cases: Flask, DB
+ if args.group == 'flask':
+
+ from flask.cli import FlaskGroup
+ from app.server.web import create_app
+ cli = FlaskGroup(create_app=create_app)
+
+ elif args.group == 'db':
+
+ import re
+ from alembic.config import main
+ sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
+ sys.exit(main())
+
+ else:
+
+ # click: parse rest of argv
+ cc = ClickSimple.create(app_cfg.CLICK_GROUPS[args.group])
+ @click.group(cls=cc, chain=False, no_args_is_help=True)
+ @click.option('-v', '--verbose', 'opt_verbosity', count=True, default=4,
+ show_default=True,
+ help='Verbosity: -v DEBUG, -vv INFO, -vvv WARN, -vvvv ERROR, -vvvvv CRITICAL')
+ @click.pass_context
+ def cli(ctx, opt_verbosity):
+ """\033[1m\033[94mMEGAPIXELS\033[0m
+ """
+ ctx.opts = {}
+ logger_utils.Logger.create(verbosity=opt_verbosity) # init logger
+
+
+ # ------------------------------------------------------------
+ # entrypoint
+ # ------------------------------------------------------------
+
+ cli() \ No newline at end of file