Mercurial > p > roundup > code
annotate roundup/scripts/roundup_demo.py @ 8446:14c7c07b32d8
feature: add thread local trace_id and trace_reason to logging.
Added trace_id to default logging so that all logs for a given request
share the same trace_id.
This allows correlation of logs across a request.
admin_guide.txt, upgrading.txt:
add docs
update sample configs to include trace_id.
rewrite logging docs in admin_guide. Hopefully they are clearer now.
clean up some stuff in the logging config file docs.
admin.py:
add decorators to run_command to enable trace_id.
change calls to db.commit() to use run_command to get trace_id.
configuration.py:
clean up imports.
update docstrings, comments and inline docs.
add trace_id to default log format.
add function for testing decorated with trace_id.
add support for dumping stack trace in logging.
add check for pytest in sys.modules to enable log propagation when
pytest is running. Otherwise tests fail as the caplog logger doesn't
see the roundup logs.
logcontext.py:
new file to handle thread local contextvar mangement.
mailgw.py:
add decorators for trace_id etc.
scripts/roundup_xlmrpc_server.py:
add decorators for trace_id etc.
fix encoding bug turning bytes into a string.
fix command line issue where we can't set encoding. (not sure if
changing encoding via command line even works)
cgi/client.py
decorate two entry points for trace_id etc.
cgi/wsgi_handler.py:
decorate entry point for trace_id etc.
test/test_config.py:
add test for trace_id in new log format.
test various cases for sinfo and errors in formating msg.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Tue, 16 Sep 2025 22:53:00 -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 : |
