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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 :

Roundup Issue Tracker: http://roundup-tracker.org/