annotate roundup/scripts/roundup_demo.py @ 8256:3a04ff6f1004

fix: crash when logging ip if roundup-server times out Under some conditions (seen in production, no reproducer), if connection timed out, there is no headers attribute RoundupRequestHandler. Check for headers attr before accessing self.headers.
author John Rouillard <rouilj@ieee.org>
date Wed, 01 Jan 2025 17:51:05 -0500
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/