summaryrefslogtreecommitdiff
path: root/animism-align/cli/cli.py
blob: 0913cd1d873b0c4607129d260e38c599ecd814ca (plain)
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
59
60
61
62
63
64
65
#!/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[94mAnimism\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 == 'viewer':
    
    from flask.cli import FlaskGroup
    from app.server.viewer 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()