Mercurial > p > roundup > code
annotate roundup/scripts/roundup_demo.py @ 8540:e8d1da6e3571
bug: fix traceback in roundup-admin init with bad config values
initialize accepts setting values for config.ini file settings. If
they are not valid, you got a python traceback.
ConfigurationError exceptions are now trapped. The admin.py's
usageError_feedback method is used to inform the user. Also the
feedback message now starts with a newline making it easier to read by
separating it from command that caused the issue.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Mon, 23 Mar 2026 13:18:41 -0400 |
| parents | 0cb81ee2e572 |
| children |
| rev | line source |
|---|---|
|
2777
baaf90070dc4
instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
1 #! /usr/bin/env python |
|
baaf90070dc4
instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
2 # |
|
baaf90070dc4
instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
3 # Copyright 2004 Richard Jones (richard@mechanicalcat.net) |
|
baaf90070dc4
instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
4 # |
|
baaf90070dc4
instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
5 |
|
7340
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
6 import argparse |
|
2777
baaf90070dc4
instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
7 |
|
4766
86ef4ab17dc5
Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents:
4108
diff
changeset
|
8 # --- patch sys.path to make sure 'import roundup' finds correct version |
|
86ef4ab17dc5
Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents:
4108
diff
changeset
|
9 import os.path as osp |
|
8086
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
10 import sys |
|
4766
86ef4ab17dc5
Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents:
4108
diff
changeset
|
11 |
|
86ef4ab17dc5
Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents:
4108
diff
changeset
|
12 thisdir = osp.dirname(osp.abspath(__file__)) |
|
86ef4ab17dc5
Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents:
4108
diff
changeset
|
13 rootdir = osp.dirname(osp.dirname(thisdir)) |
|
86ef4ab17dc5
Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents:
4108
diff
changeset
|
14 if (osp.exists(thisdir + '/__init__.py') and |
|
86ef4ab17dc5
Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents:
4108
diff
changeset
|
15 osp.exists(rootdir + '/roundup/__init__.py')): |
|
86ef4ab17dc5
Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents:
4108
diff
changeset
|
16 # the script is located inside roundup source code |
|
86ef4ab17dc5
Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents:
4108
diff
changeset
|
17 sys.path.insert(0, rootdir) |
|
86ef4ab17dc5
Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents:
4108
diff
changeset
|
18 # --/ |
|
86ef4ab17dc5
Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents:
4108
diff
changeset
|
19 |
|
7340
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
20 # import also verifies python version as side effect |
|
8086
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
21 from roundup import __version__ as roundup_version # noqa: E402 |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
22 from roundup import admin, configuration, demo, instance, version_check # noqa: F401 E402 |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
23 from roundup.anypy.my_input import my_input # noqa: E402 |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
24 from roundup.backends import list_backends # noqa: E402 |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
25 from roundup.i18n import _ # noqa: E402 |
|
7340
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
26 |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
27 DEFAULT_HOME = './demo' |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
28 DEFAULT_TEMPLATE = 'classic' |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
29 DEFAULT_BACKEND = 'sqlite' |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
30 DEFAULT_PORT = 8917 |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
31 |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
32 |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
33 def usage(home, cli, msg=''): |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
34 |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
35 # massage the help. I want [directory [backend]] but there is no way to |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
36 # specify that in argparse, so replace the three positional args with |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
37 # the proper syntax. |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
38 usage = cli.format_help() % dict(locals()) |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
39 usage = usage.replace('[directory] [backend] [nuke]', |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
40 '[[directory] [backend]] [nuke]') |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
41 |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
42 print("%s\n" % usage) |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
43 |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
44 if msg: |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
45 print(msg) |
|
2777
baaf90070dc4
instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
46 |
|
8086
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
47 |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
48 def ask_for_template(default_template, templates): |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
49 template = my_input( |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
50 _('Enter tracker template to use (one of (%(template_list)s)) [%(default_template)s]: ') % |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
51 {'template_list': ','.join(templates), |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
52 'default_template': default_template}) |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
53 |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
54 if not template: |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
55 template = default_template |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
56 elif template not in templates: |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
57 print("Unknown template: %s. Exiting." % template) |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
58 return None |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
59 |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
60 return template |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
61 |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
62 |
|
2777
baaf90070dc4
instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
63 def run(): |
|
7340
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
64 templates = admin.AdminTool().listTemplates().keys() |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
65 backends = list_backends() |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
66 |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
67 cli = argparse.ArgumentParser( |
|
8086
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
68 description=""" |
|
7340
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
69 Instant gratification demo - Roundup Issue Tracker |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
70 |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
71 Run a demo server. Config and database files are created in |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
72 'directory' (current setting/default '%(home)s') which should |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
73 not exist or should exist and already be a tracker home |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
74 directory (usually used with nuke). |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
75 |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
76 'nuke' will re-initialize the tracker instance, deleting the old data. |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
77 |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
78 The tracker that is created will have email notifications turned off. |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
79 """ % {"home": DEFAULT_HOME}, |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
80 epilog=("\nIf items marked with (*) are missing, they will be " |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
81 "asked for interactively when setting up the tracker."), |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
82 formatter_class=argparse.RawTextHelpFormatter, |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
83 add_help=True) |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
84 |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
85 cli.add_argument('-B', '--bind_address', |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
86 default="127.0.0.1", |
|
8086
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
87 help=("Choose address for server to listen at.\n" |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
88 "Use 0.0.0.0 to bind to all addreses. Use\n" |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
89 "the external name of the computer to bind to\n" |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
90 "the external host interface.\n" |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
91 "Default: %(default)s.\n\n")) |
|
7340
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
92 cli.add_argument('-b', '--backend_db', |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
93 choices=backends, |
|
8086
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
94 help=("Choose backend database. Default: %s.\n\n" % |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
95 DEFAULT_BACKEND)) |
|
7926
05f36a527a45
feat: allow setting URL hostname with -H option to roundup-demo
John Rouillard <rouilj@ieee.org>
parents:
7925
diff
changeset
|
96 cli.add_argument('-H', '--hostname', |
|
05f36a527a45
feat: allow setting URL hostname with -H option to roundup-demo
John Rouillard <rouilj@ieee.org>
parents:
7925
diff
changeset
|
97 default="localhost", |
|
8086
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
98 help=("Choose hostname for the server.\n" |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
99 "Default: %(default)s.\n\n" |
|
7926
05f36a527a45
feat: allow setting URL hostname with -H option to roundup-demo
John Rouillard <rouilj@ieee.org>
parents:
7925
diff
changeset
|
100 )) |
|
7340
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
101 cli.add_argument('-t', '--template', |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
102 choices=templates, |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
103 help="Use specified template. (*)\n\n") |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
104 cli.add_argument('-p', '--port', |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
105 type=int, |
|
8086
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
106 help=("Listen at this port. Default: search for\n" |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
107 "open port starting at %s\n\n" % DEFAULT_PORT)) |
|
7340
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
108 cli.add_argument('-P', '--urlport', |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
109 type=int, |
|
8086
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
110 help=("Set docker external port. If using\n" |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
111 " docker ... -p 9090:8917 ...\n" |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
112 "this should be set to 9090.\n" |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
113 "Default: as selected by --port\n\n")) |
|
7340
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
114 cli.add_argument('-V', '--version', action='version', |
|
8086
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
115 version='Roundup version %s' % roundup_version, |
|
7340
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
116 help=( |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
117 "Show program's version number: %s and exit\n" % |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
118 roundup_version)) |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
119 |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
120 cli.add_argument('directory', nargs='?', |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
121 help="Create home for tracker in directory. (*)\n") |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
122 |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
123 # add 'nuke' to choices so backend will accept nuke if only 2 args. |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
124 choices = backends + ['nuke'] |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
125 cli.add_argument('backend', nargs='?', metavar='backend', choices=choices, |
|
8086
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
126 help=("Choose backend database. " |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
127 "Depricated, use -b instead.\n" |
|
7340
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
128 "If it is used, you *must* specify directory.\n\n")) |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
129 |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
130 cli.add_argument('nuke', nargs='?', metavar='nuke', choices=['nuke'], |
|
8086
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
131 help=("The word 'nuke' will delete tracker and reset.\n" |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
132 "E.G. %(prog)s -b sqlite \\ \n" |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
133 "-t classic ./mytracker nuke\n") % {"prog": sys.argv[0]}) |
|
7340
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
134 |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
135 cli_args = cli.parse_args() |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
136 |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
137 # collect all positional args in order in array to parse |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
138 # strip all None. |
|
8086
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
139 cli_args.cmd = [x for x in [cli_args.directory, cli_args.backend, cli_args.nuke] |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
140 if x is not None] |
|
7340
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
141 |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
142 try: |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
143 nuke = cli_args.cmd[-1] == 'nuke' |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
144 if nuke: |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
145 _ignore = cli_args.cmd.pop() # remove nuke |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
146 except IndexError: |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
147 nuke = False |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
148 |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
149 try: |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
150 tracker_home = cli_args.cmd[0] |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
151 except IndexError: |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
152 tracker_home = None |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
153 |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
154 # invoked as demo tracker_dir sqlite [nuke] |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
155 try: |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
156 cli_backend = cli_args.cmd[1] |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
157 except IndexError: |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
158 cli_backend = None |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
159 |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
160 home = tracker_home or DEFAULT_HOME |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
161 template = cli_args.template or DEFAULT_TEMPLATE |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
162 backend = cli_args.backend_db or cli_backend or DEFAULT_BACKEND |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
163 |
|
7697
c73a1177c2b2
fix: roundup-demo, interactive mode would nuke an existing tracker.
John Rouillard <rouilj@ieee.org>
parents:
7340
diff
changeset
|
164 if not tracker_home: |
|
c73a1177c2b2
fix: roundup-demo, interactive mode would nuke an existing tracker.
John Rouillard <rouilj@ieee.org>
parents:
7340
diff
changeset
|
165 home = my_input( |
|
c73a1177c2b2
fix: roundup-demo, interactive mode would nuke an existing tracker.
John Rouillard <rouilj@ieee.org>
parents:
7340
diff
changeset
|
166 _('Enter directory path to create demo tracker [%s]: ') % home) |
|
c73a1177c2b2
fix: roundup-demo, interactive mode would nuke an existing tracker.
John Rouillard <rouilj@ieee.org>
parents:
7340
diff
changeset
|
167 if not home: |
|
c73a1177c2b2
fix: roundup-demo, interactive mode would nuke an existing tracker.
John Rouillard <rouilj@ieee.org>
parents:
7340
diff
changeset
|
168 home = DEFAULT_HOME |
|
c73a1177c2b2
fix: roundup-demo, interactive mode would nuke an existing tracker.
John Rouillard <rouilj@ieee.org>
parents:
7340
diff
changeset
|
169 |
|
2777
baaf90070dc4
instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
170 # if there is no tracker in home, force nuke |
|
baaf90070dc4
instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
171 try: |
|
baaf90070dc4
instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
172 instance.open(home) |
|
baaf90070dc4
instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
173 except configuration.NoConfigError: |
|
7340
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
174 nuke = True |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
175 |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
176 # if we are to create the tracker, prompt for settings |
|
2777
baaf90070dc4
instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
177 if nuke: |
|
baaf90070dc4
instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
178 # FIXME: i'd like to have an option to abort the tracker creation |
|
baaf90070dc4
instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
179 # say, by entering a single dot. but i cannot think of |
|
baaf90070dc4
instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
180 # appropriate prompt for that. |
|
8086
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
181 if cli_args.template not in templates: |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
182 template = ask_for_template(template, templates) |
|
7340
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
183 if not template: |
|
8086
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
184 sys.exit(1) |
|
2777
baaf90070dc4
instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
185 # install |
|
7926
05f36a527a45
feat: allow setting URL hostname with -H option to roundup-demo
John Rouillard <rouilj@ieee.org>
parents:
7925
diff
changeset
|
186 url_port = cli_args.urlport or cli_args.port or DEFAULT_PORT |
|
2777
baaf90070dc4
instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
187 demo.install_demo(home, backend, |
|
7340
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
188 admin.AdminTool().listTemplates()[template]['path'], |
|
7926
05f36a527a45
feat: allow setting URL hostname with -H option to roundup-demo
John Rouillard <rouilj@ieee.org>
parents:
7925
diff
changeset
|
189 use_port=url_port, use_host=cli_args.hostname) |
|
8086
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
190 elif (cli_args.backend or cli_args.template or cli_args.backend_db): |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
191 # options were specified that are only useful on initialization. |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
192 usage(home, cli, msg=( |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
193 "Specifying backend or template is only allowed when\n" |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
194 "creating a tracker or with nuke.\n")) |
|
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
195 sys.exit(1) |
|
2777
baaf90070dc4
instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
196 # run |
|
7340
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
197 demo.run_demo(home, bind_addr=cli_args.bind_address, |
|
7b9bddda9d2d
Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents:
7062
diff
changeset
|
198 bind_port=cli_args.port) |
|
6042
d09a1d6a3bd9
flake8 whitespace fixes; add version_check
John Rouillard <rouilj@ieee.org>
parents:
5401
diff
changeset
|
199 |
|
8086
39013eba1aaf
refactor: move template prompt to new function; ruff lint cleanups
John Rouillard <rouilj@ieee.org>
parents:
7926
diff
changeset
|
200 |
|
2777
baaf90070dc4
instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
201 if __name__ == '__main__': |
|
baaf90070dc4
instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
202 run() |
|
baaf90070dc4
instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
203 |
|
baaf90070dc4
instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff
changeset
|
204 # vim: set et sts=4 sw=4 : |
