annotate scripts/Docker/roundup_start @ 8408:e882a5d52ae5

refactor: move RateLimitExceeded to roundup.cgi.exceptions RateLimitExceeded is an HTTP exception that raises code 429. Move it to roundup.cgi.exceptions where all the other exceptions that result in http status codes are located. Also make it inherit from HTTPException since it is one. Also add docstrings for all HTTP exceptions and order HTTPExceptions by status code. BREAKING CHANGE: if somebody is importing RateLimitExceeded they will need to change their import. I consider it unlikely anybody is using RateLimitExceeded. Detectors and extensions are unlikely to raise RateLimitExceeded. So I am leaving it out of the upgrading doc. Just doc in change log.
author John Rouillard <rouilj@ieee.org>
date Sun, 10 Aug 2025 21:27:06 -0400
parents c6fcc8ba478a
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6555
34cbd0e633d2 Added FastCGI deployment info, updated Docker docs; docker-compose added
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
1 #! /bin/sh
34cbd0e633d2 Added FastCGI deployment info, updated Docker docs; docker-compose added
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
2
34cbd0e633d2 Added FastCGI deployment info, updated Docker docs; docker-compose added
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
3 # When container starts verify that the trackers are configured.
34cbd0e633d2 Added FastCGI deployment info, updated Docker docs; docker-compose added
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
4 # If they are, start the server otherwise run roundup-admin
34cbd0e633d2 Added FastCGI deployment info, updated Docker docs; docker-compose added
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
5 # for installation and initialization.
34cbd0e633d2 Added FastCGI deployment info, updated Docker docs; docker-compose added
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
6
7635
0f6b7a70bc43 fix: update comments force exit on pipefail
John Rouillard <rouilj@ieee.org>
parents: 7441
diff changeset
7 # "$@" should be one of the recognized keywords or arguments for
0f6b7a70bc43 fix: update comments force exit on pipefail
John Rouillard <rouilj@ieee.org>
parents: 7441
diff changeset
8 # roundup-server including one or more tracker tracker=directory pairs.
0f6b7a70bc43 fix: update comments force exit on pipefail
John Rouillard <rouilj@ieee.org>
parents: 7441
diff changeset
9
7675
b3c3e508b18f fix: move POSIX unsupported items outside of set -e
John Rouillard <rouilj@ieee.org>
parents: 7674
diff changeset
10 # exit on errors; POSIX (e.g. dash as on ubuntu) doesn't support
b3c3e508b18f fix: move POSIX unsupported items outside of set -e
John Rouillard <rouilj@ieee.org>
parents: 7674
diff changeset
11 # pipefail. So setting it will fail. Allow that to happen then
b3c3e508b18f fix: move POSIX unsupported items outside of set -e
John Rouillard <rouilj@ieee.org>
parents: 7674
diff changeset
12 # set exit on error so the script will still run.
b3c3e508b18f fix: move POSIX unsupported items outside of set -e
John Rouillard <rouilj@ieee.org>
parents: 7674
diff changeset
13 set -o pipefail
b3c3e508b18f fix: move POSIX unsupported items outside of set -e
John Rouillard <rouilj@ieee.org>
parents: 7674
diff changeset
14 # not supported by POSIX shell, but then neither is pipefail.
b3c3e508b18f fix: move POSIX unsupported items outside of set -e
John Rouillard <rouilj@ieee.org>
parents: 7674
diff changeset
15 trap "echo 'Exiting on pipefail'" ERR
b3c3e508b18f fix: move POSIX unsupported items outside of set -e
John Rouillard <rouilj@ieee.org>
parents: 7674
diff changeset
16
b3c3e508b18f fix: move POSIX unsupported items outside of set -e
John Rouillard <rouilj@ieee.org>
parents: 7674
diff changeset
17 set -e
6555
34cbd0e633d2 Added FastCGI deployment info, updated Docker docs; docker-compose added
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
18
7677
c7788bdd3760 fix: use [ -n ... ] rather than ! [ -z ...]
John Rouillard <rouilj@ieee.org>
parents: 7676
diff changeset
19 if [ -n "$SHELL_DEBUG" ]; then
6581
b5fb268b7f04 Docker installation doc improved and switchable debugging
John Rouillard <rouilj@ieee.org>
parents: 6555
diff changeset
20 set -xv
b5fb268b7f04 Docker installation doc improved and switchable debugging
John Rouillard <rouilj@ieee.org>
parents: 6555
diff changeset
21 fi
6555
34cbd0e633d2 Added FastCGI deployment info, updated Docker docs; docker-compose added
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
22
34cbd0e633d2 Added FastCGI deployment info, updated Docker docs; docker-compose added
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
23 trap exit INT
34cbd0e633d2 Added FastCGI deployment info, updated Docker docs; docker-compose added
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
24
34cbd0e633d2 Added FastCGI deployment info, updated Docker docs; docker-compose added
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
25 do_exit=0
34cbd0e633d2 Added FastCGI deployment info, updated Docker docs; docker-compose added
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
26
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
27 if test -t 0 -a -t 1; then # see if stdin/out are associated with a tty
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
28 might_be_interactive="true"
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
29 else
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
30 might_be_interactive="false"
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
31 fi
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
32
7835
c6fcc8ba478a fix: log arguments passed to docker start script to stdout.
John Rouillard <rouilj@ieee.org>
parents: 7707
diff changeset
33 printf "Starting Roundup with arguments: $@"
c6fcc8ba478a fix: log arguments passed to docker start script to stdout.
John Rouillard <rouilj@ieee.org>
parents: 7707
diff changeset
34
6555
34cbd0e633d2 Added FastCGI deployment info, updated Docker docs; docker-compose added
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
35 for tracker_spec in "$@"; do
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
36 # IFS== set a=b doesn't just assign $1 and $2 in busybox ash
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
37 # it also clobbers '$@'. 'printf mumble | read' starts read in a
6555
34cbd0e633d2 Added FastCGI deployment info, updated Docker docs; docker-compose added
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
38 # subshell so vars are not available in parent.
7673
08e87030f3a2 fix: use read -r to remove \ special meaning
John Rouillard <rouilj@ieee.org>
parents: 7672
diff changeset
39 IFS="=" read -r tracker directory <<- EOE
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
40 $tracker_spec
6555
34cbd0e633d2 Added FastCGI deployment info, updated Docker docs; docker-compose added
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
41 EOE
34cbd0e633d2 Added FastCGI deployment info, updated Docker docs; docker-compose added
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
42 # ^ is a tab for use with <<-
34cbd0e633d2 Added FastCGI deployment info, updated Docker docs; docker-compose added
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
43
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
44 if [ -z "$directory" ]; then
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
45 # $tracker_spec was not in the form of a=b, check to see
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
46 # if it's a request to start in demo/shell mode:
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
47 case "$tracker" in
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
48 demo)
7661
b31343f16153 fix: roundup_start script exited for 2.3.0 roundup.
John Rouillard <rouilj@ieee.org>
parents: 7635
diff changeset
49 # if grep does not find 2.2.0 it exits non-zero and
b31343f16153 fix: roundup_start script exited for 2.3.0 roundup.
John Rouillard <rouilj@ieee.org>
parents: 7635
diff changeset
50 # because of "-eo pipefail" the script exits. So || true
b31343f16153 fix: roundup_start script exited for 2.3.0 roundup.
John Rouillard <rouilj@ieee.org>
parents: 7635
diff changeset
51 # so pipeline exits true.
b31343f16153 fix: roundup_start script exited for 2.3.0 roundup.
John Rouillard <rouilj@ieee.org>
parents: 7635
diff changeset
52 version=$(roundup-admin -v | grep '2\.2\.0' || true)
7441
e7df82ae137d Cleanup docker before 2.3.0b1 release
John Rouillard <rouilj@ieee.org>
parents: 7340
diff changeset
53 if [ -n "$version" ]; then
e7df82ae137d Cleanup docker before 2.3.0b1 release
John Rouillard <rouilj@ieee.org>
parents: 7340
diff changeset
54 printf "\nRoundup version: %s does not support docker demo mode\n" "$version"
e7df82ae137d Cleanup docker before 2.3.0b1 release
John Rouillard <rouilj@ieee.org>
parents: 7340
diff changeset
55 printf "Try building with a version newer than 2.2.0.\n"
e7df82ae137d Cleanup docker before 2.3.0b1 release
John Rouillard <rouilj@ieee.org>
parents: 7340
diff changeset
56 printf "For example:\n"
e7df82ae137d Cleanup docker before 2.3.0b1 release
John Rouillard <rouilj@ieee.org>
parents: 7340
diff changeset
57 printf " docker build --build-arg=\"source=pypi~=2.3.0a1\" ...\n"
e7df82ae137d Cleanup docker before 2.3.0b1 release
John Rouillard <rouilj@ieee.org>
parents: 7340
diff changeset
58 exit 3
e7df82ae137d Cleanup docker before 2.3.0b1 release
John Rouillard <rouilj@ieee.org>
parents: 7340
diff changeset
59 fi
e7df82ae137d Cleanup docker before 2.3.0b1 release
John Rouillard <rouilj@ieee.org>
parents: 7340
diff changeset
60
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
61 if [ -z "$PORT_8080" ]; then
7441
e7df82ae137d Cleanup docker before 2.3.0b1 release
John Rouillard <rouilj@ieee.org>
parents: 7340
diff changeset
62 PORT_8080=8917
e7df82ae137d Cleanup docker before 2.3.0b1 release
John Rouillard <rouilj@ieee.org>
parents: 7340
diff changeset
63 printf " If docker reports a bind error, you can set the\n"
e7df82ae137d Cleanup docker before 2.3.0b1 release
John Rouillard <rouilj@ieee.org>
parents: 7340
diff changeset
64 printf " Docker environment variable PORT_8080 to\n"
e7df82ae137d Cleanup docker before 2.3.0b1 release
John Rouillard <rouilj@ieee.org>
parents: 7340
diff changeset
65 printf " fix it.\n\n"
e7df82ae137d Cleanup docker before 2.3.0b1 release
John Rouillard <rouilj@ieee.org>
parents: 7340
diff changeset
66 printf " Add -e PORT_8080=port_number to the docker run\n"
e7df82ae137d Cleanup docker before 2.3.0b1 release
John Rouillard <rouilj@ieee.org>
parents: 7340
diff changeset
67 printf " command. The port_number must match the first\n"
e7df82ae137d Cleanup docker before 2.3.0b1 release
John Rouillard <rouilj@ieee.org>
parents: 7340
diff changeset
68 printf " value to -p which must be an unused port\n"
e7df82ae137d Cleanup docker before 2.3.0b1 release
John Rouillard <rouilj@ieee.org>
parents: 7340
diff changeset
69 printf " on your server.\n\n"
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
70 fi
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
71 template=classic
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
72 backend=sqlite
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
73
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
74 shift
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
75
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
76 demoArgs=$#
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
77
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
78 for arg in "$@"; do
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
79 # all keywords are unique, so iterate over all and
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
80 # assign as appropriate
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
81 case "$arg" in
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
82 classic|devel|jinja2|minimal|responsive)
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
83 template="$arg";;
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
84
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
85 anydbm|sqlite)
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
86 backend="$arg";;
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
87 postgres|mysql)
7672
cf5d37182dc9 fix: use variable template sub for printf.
John Rouillard <rouilj@ieee.org>
parents: 7661
diff changeset
88 printf "demo mode only supports sqlite or anydbm backends, not %s. Exiting." "$1"
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
89 exit 1;;
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
90 nuke)
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
91 nuke="$arg";;
7672
cf5d37182dc9 fix: use variable template sub for printf.
John Rouillard <rouilj@ieee.org>
parents: 7661
diff changeset
92 *) printf "Unknown argument %s.\n" "$1"
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
93 printf "Usage: demo [template] [db]\n"
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
94 printf " template: one of "
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
95 printf "classic devel jinja2 minimal responsive\n"
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
96 printf " db: one of: sqlite anydbm\n"
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
97 printf "default: classic sqlite\n"
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
98 printf "Exiting\n"
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
99 exit 1
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
100 esac
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
101 shift
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
102 done
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
103
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
104 # run demo make sure to set bind address -B to 0.0.0.0
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
105 # otherwise we can never make it out of the docker container.
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
106 # use -p to force port to match the exported docker port.
7678
095f379bf639 fix: do not use -a as argument to test
John Rouillard <rouilj@ieee.org>
parents: 7677
diff changeset
107 if [ -f tracker/demo/config.ini ] && [ -z "$nuke" ]; then
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
108 if [ "$demoArgs" -ne 0 ]; then
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
109 printf "Error: backend and template arguments to demo "
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
110 printf "are invalid if a tracker\nis configured and "
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
111 printf "'nuke' is not specified.\nExiting.\n"
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
112 exit 1
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
113 fi
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
114 printf "Restarting existing tracker.\n"
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
115 # Restart an existing demo tracker.
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
116 exec roundup-demo \
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
117 -B 0.0.0.0 \
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
118 -p 8080 \
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
119 tracker/demo
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
120 else
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
121 # Create new or nuke/create existing tracker.
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
122 # Set parameters required to create tracker.
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
123 # Inherit the url port spec from the environment
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
124 # variable PORT_8080 using default value or value
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
125 # specified on the docker run command line.
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
126 printf "Creating new tracker.\n"
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
127 exec roundup-demo \
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
128 -B 0.0.0.0 \
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
129 -p 8080 \
7674
b8aef93178db fix: quote variable substitution
John Rouillard <rouilj@ieee.org>
parents: 7673
diff changeset
130 -b "$backend" \
b8aef93178db fix: quote variable substitution
John Rouillard <rouilj@ieee.org>
parents: 7673
diff changeset
131 --urlport "$PORT_8080" \
b8aef93178db fix: quote variable substitution
John Rouillard <rouilj@ieee.org>
parents: 7673
diff changeset
132 -t "$template" \
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
133 tracker/demo \
7706
ccb5169ee6ee fix: do not quote nuke arg
John Rouillard <rouilj@ieee.org>
parents: 7678
diff changeset
134 $nuke
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
135 fi
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
136 ;;
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
137 shell)
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
138 if [ "$might_be_interactive" = "false" ]; then
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
139 printf \
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
140 "Error: must use -it on docker command line to invoke shell\n"
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
141 exit 3
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
142 fi
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
143 exec /bin/sh;;
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
144 admin)
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
145 shift
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
146 exec roundup-admin "$@";;
7707
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
147
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
148 help)
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
149 sed -e 's/^\t\t//' <<EOH
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
150 Example Usage:
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
151 docker run --rm -it -p 127.0.0.1:8917:8080 \\
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
152 -v $PWD:/usr/src/app/tracker \\
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
153 --name roundup_demo docker/image ...
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
154
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
155 where ... is:
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
156
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
157 help - this output
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
158
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
159 demo ... - run a demo tracker with optional arguments
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
160 tracker home is in '/usr/src/app/tracker/demo'
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
161 directory.
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
162
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
163 admin ... - start roundup-admin shell or execute following
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
164 arguments. Use '-i tracker/demo' to set tracker
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
165 home.
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
166
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
167 shell - start a unix shell for advanced config
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
168
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
169 roundup-server(1) arguments - at minimum one or more
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
170 tracker=tracker_home/directory
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
171 specifications. See documentation for details.
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
172
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
173 if no arguments are supplied, it will start the guided
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
174 install sequence. See documentation for details.
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
175
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
176 demo Mode Arguments:
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
177
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
178 one optional template name:
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
179 classic, devel, jinja2, minimal, responsive
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
180
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
181 one optional database backend:
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
182 sqlite, anydbm
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
183
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
184 the term 'nuke' to destroy demo tracker and start over
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
185
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
186 Other docker CLI Arguments:
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
187
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
188 --env SHELL_DEBUG=1 - enable debug output from startup script
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
189
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
190 EOH
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
191 exit 0
36c3acb4b49b feat: add help argument for docker image
John Rouillard <rouilj@ieee.org>
parents: 7706
diff changeset
192 ;;
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
193 *)
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
194 # we just continue. Allow setting CMD to:
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
195 # -i index_template issue=tracker
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
196 # for example.
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
197 continue
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
198 esac
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
199 fi
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
200
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
201 # we have a tracker=directory spec. Validate it and see if we need to
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
202 # install or initialize it.
6555
34cbd0e633d2 Added FastCGI deployment info, updated Docker docs; docker-compose added
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
203
34cbd0e633d2 Added FastCGI deployment info, updated Docker docs; docker-compose added
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
204 # something is specified or built wrong. Don't start.
34cbd0e633d2 Added FastCGI deployment info, updated Docker docs; docker-compose added
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
205 if [ ! -d "$directory" ]; then
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
206 printf "Unable to find directory %s for tracker %s. Exiting.\n" \
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
207 "$directory" "$tracker"
6555
34cbd0e633d2 Added FastCGI deployment info, updated Docker docs; docker-compose added
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
208 exit 1
34cbd0e633d2 Added FastCGI deployment info, updated Docker docs; docker-compose added
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
209 fi
34cbd0e633d2 Added FastCGI deployment info, updated Docker docs; docker-compose added
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
210
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
211 # verify that config.ini has been edited with a web spec.
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
212 # user must at minimum define web in config.ini.
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
213 if ! grep '^\s*web\s*=\s*' "$directory/config.ini" > /dev/null 2>&1
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
214 then
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
215 if [ -e "$directory/config.ini" ]; then
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
216 printf "Please edit %s/config.ini and set the required
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
217 parameters.\n" "$directory"
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
218 printf "The web setting appears to be missing.\n"
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
219 exit 3
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
220 fi
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
221
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
222 printf "Installing %s tracker in %s\n" "$tracker" "$directory"
6555
34cbd0e633d2 Added FastCGI deployment info, updated Docker docs; docker-compose added
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
223 roundup-admin -i "$directory" install
34cbd0e633d2 Added FastCGI deployment info, updated Docker docs; docker-compose added
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
224 do_exit=1
34cbd0e633d2 Added FastCGI deployment info, updated Docker docs; docker-compose added
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
225 fi
34cbd0e633d2 Added FastCGI deployment info, updated Docker docs; docker-compose added
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
226
34cbd0e633d2 Added FastCGI deployment info, updated Docker docs; docker-compose added
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
227 # we have a valid config.ini so init database if not done
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
228 # if we get errors, the db directory should be missing
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
229 # and we print an error.
7678
095f379bf639 fix: do not use -a as argument to test
John Rouillard <rouilj@ieee.org>
parents: 7677
diff changeset
230 if [ $do_exit = 0 ] && ! [ -e "$directory/db" ]; then
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
231 printf "Initializing tracker %s\n" "$tracker"
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
232 if ! roundup-admin -i "$directory" init; then
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
233 # something went wrong.
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
234 # verify it looks like a tracker directory
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
235 # then remove the database directory
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
236 test -e "$directory/TEMPLATE-INFO.txt" && \
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
237 rm -rf "$directory/db"
6555
34cbd0e633d2 Added FastCGI deployment info, updated Docker docs; docker-compose added
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
238 fi
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
239 do_exit=1
6555
34cbd0e633d2 Added FastCGI deployment info, updated Docker docs; docker-compose added
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
240 fi
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
241 done # for "$@"
6555
34cbd0e633d2 Added FastCGI deployment info, updated Docker docs; docker-compose added
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
242
34cbd0e633d2 Added FastCGI deployment info, updated Docker docs; docker-compose added
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
243 # if any config.ini needs editing don't start up.
7676
678d235f024d fix: use POSIX supported test a = b rather than a == b.
John Rouillard <rouilj@ieee.org>
parents: 7675
diff changeset
244 if [ $do_exit = 0 ]; then
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 6581
diff changeset
245 # make roundup-server process pid 1 with exec
6555
34cbd0e633d2 Added FastCGI deployment info, updated Docker docs; docker-compose added
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
246 exec roundup-server -n 0.0.0.0 "$@"
34cbd0e633d2 Added FastCGI deployment info, updated Docker docs; docker-compose added
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
247 fi
34cbd0e633d2 Added FastCGI deployment info, updated Docker docs; docker-compose added
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
248
34cbd0e633d2 Added FastCGI deployment info, updated Docker docs; docker-compose added
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
249 exit 0

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