annotate roundup/scripts/roundup_demo.py @ 7340:7b9bddda9d2d

Add support for demo mode in docker. roundup/demo.py Make changes to allow exposed port in docker to be specified separately from the port that demo mode binds to. Also permit bind address specification as well. roundup/scripts/roundup_demo.py: Update required by changes in demo.py. Also move away from positional arguments to prefer flag arguments. Required for passing port and host specification. Flake8 fixes. share/man/man1/roundup-demo.1 Document use of option flags rather than positional params. Other cleanups. doc/installation.txt: Document new docker modes: demo, shell and admin. Update docs: overview section - reorg, added template info for the impatient section - added docker demo mode reference, more docs on top level demo.py use. new section on docker demo mode removed getting roundup section. folded into installing roundup. also prior for the impatient section describes how to download. install via pip in venv recommended supported method document all provided templates. not just minimal and classic. added index references. move sections around, decreased sectin depth, reformatting scripts/Docker/roundup_healthcheck: When running roundup-demo, there is no tracker spec. So default to demo if no tracker=directory args found. Prevent's docker from reporting an unhealthy container when running demo. scripts/Docker/roundup_start: implement demo, shell, admin docker modes.
author John Rouillard <rouilj@ieee.org>
date Sun, 14 May 2023 09:43:53 -0400
parents 062a54eeb0a1
children c73a1177c2b2
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 import sys
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
8
4766
86ef4ab17dc5 Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents: 4108
diff changeset
9 # --- 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
10 import os.path as osp
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
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
21 from roundup import version_check # noqa: F401 E402
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
22 from roundup import admin, configuration, demo, instance # noqa: E402
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
23 from roundup import __version__ as roundup_version # noqa: E402
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
24 from roundup.anypy.my_input import my_input # noqa: E402
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
25 from roundup.backends import list_backends # noqa: E402
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
26 from roundup.i18n import _ # noqa: E402
4766
86ef4ab17dc5 Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents: 4108
diff changeset
27
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
28
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
29 DEFAULT_HOME = './demo'
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
30 DEFAULT_TEMPLATE = 'classic'
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
31 DEFAULT_BACKEND = 'sqlite'
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
32 DEFAULT_PORT = 8917
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
33
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 def usage(home, cli, msg=''):
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
36
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
37 # 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
38 # 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
39 # the proper syntax.
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
40 usage = cli.format_help() % dict(locals())
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
41 usage = usage.replace('[directory] [backend] [nuke]',
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
42 '[[directory] [backend]] [nuke]')
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 print("%s\n" % usage)
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
45
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
46 if msg:
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
47 print(msg)
2777
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
48
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
49 def run():
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
50 templates = admin.AdminTool().listTemplates().keys()
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
51 backends = list_backends()
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
52
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
53 cli = argparse.ArgumentParser(
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
54 description= """
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
55 Instant gratification demo - Roundup Issue Tracker
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
56
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
57 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
58 '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
59 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
60 directory (usually used with nuke).
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
61
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
62 '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
63
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
64 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
65 """ % {"home": DEFAULT_HOME},
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
66 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
67 "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
68 formatter_class=argparse.RawTextHelpFormatter,
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
69 add_help=True)
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 cli.add_argument('-B', '--bind_address',
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
72 default="127.0.0.1",
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
73 help=( "Choose address for server to listen at.\n"
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
74 "Use 0.0.0.0 to bind to all addreses.\n"
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
75 "Default: %(default)s.\n\n"))
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
76 cli.add_argument('-b', '--backend_db',
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
77 choices=backends,
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
78 help=( "Choose backend database. Default: %s.\n\n" %
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
79 DEFAULT_BACKEND))
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
80 cli.add_argument('-t', '--template',
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
81 choices=templates,
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
82 help="Use specified template. (*)\n\n")
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
83 cli.add_argument('-p', '--port',
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
84 type=int,
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
85 help=( "Listen at this port. Default: search for\n"
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
86 "open port starting at %s\n\n" % DEFAULT_PORT))
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
87 cli.add_argument('-P', '--urlport',
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
88 type=int,
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
89 help=( "Set docker external port. If using\n"
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
90 " docker ... -p 9090:8917 ..."
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
91 "this should be set to 9090. "
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
92 "Default: as selected by --port\n\n"))
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
93 cli.add_argument('-V', '--version', action='version',
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
94 version='Roundup version %s'%roundup_version,
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
95 help=(
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
96 "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
97 roundup_version))
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
98
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
99 cli.add_argument('directory', nargs='?',
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
100 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
101
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
102 # 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
103 choices = backends + ['nuke']
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
104 cli.add_argument('backend', nargs='?', metavar='backend', choices=choices,
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
105 help=( "Choose backend database. "
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
106 "Depricated, use -b instead.\n"
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
107 "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
108
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
109 cli.add_argument('nuke', nargs='?', metavar='nuke', choices=['nuke'],
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
110 help=( "The word 'nuke' will delete tracker and reset.\n"
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
111 "E.G. %(prog)s -b sqlite -t classic ./mytracker nuke\n") % {"prog": sys.argv[0]})
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
112
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
113 cli_args = cli.parse_args()
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
114
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
115 # 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
116 # strip all None.
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
117 cli_args.cmd = [ x for x in [cli_args.directory, cli_args.backend, cli_args.nuke] if x != None ]
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
118
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
119 try:
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
120 nuke = cli_args.cmd[-1] == 'nuke'
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
121 if nuke:
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
122 _ignore = cli_args.cmd.pop() # remove nuke
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
123 except IndexError:
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
124 nuke = False
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
125
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
126 try:
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
127 tracker_home = cli_args.cmd[0]
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
128 except IndexError:
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
129 tracker_home = None
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
130
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
131 # invoked as demo tracker_dir sqlite [nuke]
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
132 try:
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
133 cli_backend = cli_args.cmd[1]
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
134 except IndexError:
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
135 cli_backend = None
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 home = tracker_home or DEFAULT_HOME
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
138 template = cli_args.template or DEFAULT_TEMPLATE
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
139 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
140
2777
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
141 # 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
142 try:
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
143 instance.open(home)
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
144 valid_home = True
2777
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
145 except configuration.NoConfigError:
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
146 nuke = True
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
147 valid_home = 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 # 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
150 if nuke:
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
151 # 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
152 # 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
153 # appropriate prompt for that.
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
154 if not tracker_home:
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
155 home = my_input(
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
156 _('Enter directory path to create demo tracker [%s]: ') % home)
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
157 if not home:
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
158 home = DEFAULT_HOME
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 if not cli_args.template in templates:
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
161 template = my_input(
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
162 _('Enter tracker template to use (one of (%(template_list)s)) [%(default_template)s]: ') %
7062
062a54eeb0a1 Fix internationalized strings with multiple unlabeled % replacements.
John Rouillard <rouilj@ieee.org>
parents: 6042
diff changeset
163 { 'template_list': ','.join(templates),
062a54eeb0a1 Fix internationalized strings with multiple unlabeled % replacements.
John Rouillard <rouilj@ieee.org>
parents: 6042
diff changeset
164 'default_template': template})
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
165 if not template:
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
166 template = DEFAULT_TEMPLATE
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
167 elif template not in templates:
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
168 print("Unknown template: %s. Exiting." % template)
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
169 exit(1)
2777
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
170 # install
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
171 demo.install_demo(home, backend,
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
172 admin.AdminTool().listTemplates()[template]['path'],
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
173 use_port=cli_args.urlport or DEFAULT_PORT)
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
174 else:
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
175 # make sure that no options are specified that are only useful on initialization.
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
176 if ( cli_args.backend or cli_args.template or
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
177 cli_args.backend_db ):
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
178 usage(home, cli, msg=(
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
179 "Specifying backend or template is only allowed when\n"
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
180 "creating a tracker or with nuke.\n"))
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
181 exit(1)
2777
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
182 # run
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
183 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
184 bind_port=cli_args.port)
6042
d09a1d6a3bd9 flake8 whitespace fixes; add version_check
John Rouillard <rouilj@ieee.org>
parents: 5401
diff changeset
185
2777
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
186 if __name__ == '__main__':
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
187 run()
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
188
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
189 # vim: set et sts=4 sw=4 :

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