1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
#!/usr/bin/env python
import click
from app.settings import app_cfg
from app.utils import log_utils
from app.utils.click_factory import ClickSimple
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[94mSwimmer\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
if __name__ == '__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.option('--log', 'opt_fp_log', help='Path to logfile')
@click.pass_context
def cli(ctx, opt_verbosity, opt_fp_log):
"""\033[1m\033[94mSwimmer\033[0m
"""
ctx.opts = {}
log_utils.Logger.create(verbosity=opt_verbosity, logfile=opt_fp_log)
# entrypoint
cli()
|