Sat, 09 Oct 2021 16:52:19 +0200
HP34970A - part 6
0 | 1 | #!/usr/bin/env bash |
2 | ## | |
3 | # This section should match your Makefile | |
4 | ## | |
5 | PY=${PY:-python} | |
6 | PELICAN=${PELICAN:-pelican} | |
7 | PELICANOPTS= | |
8 | ||
9 | BASEDIR=$(pwd) | |
10 | INPUTDIR=$BASEDIR/content | |
11 | OUTPUTDIR=$BASEDIR/output | |
12 | CONFFILE=$BASEDIR/pelicanconf.py | |
13 | ||
14 | ### | |
15 | # Don't change stuff below here unless you are sure | |
16 | ### | |
17 | ||
18 | SRV_PID=$BASEDIR/srv.pid | |
19 | PELICAN_PID=$BASEDIR/pelican.pid | |
20 | ||
21 | function usage(){ | |
22 | echo "usage: $0 (stop) (start) (restart) [port]" | |
23 | echo "This starts Pelican in debug and reload mode and then launches" | |
24 | echo "an HTTP server to help site development. It doesn't read" | |
25 | echo "your Pelican settings, so if you edit any paths in your Makefile" | |
26 | echo "you will need to edit your settings as well." | |
27 | exit 3 | |
28 | } | |
29 | ||
30 | function alive() { | |
31 | kill -0 $1 >/dev/null 2>&1 | |
32 | } | |
33 | ||
34 | function shut_down(){ | |
35 | PID=$(cat $SRV_PID) | |
36 | if [[ $? -eq 0 ]]; then | |
37 | if alive $PID; then | |
38 | echo "Stopping HTTP server" | |
39 | kill $PID | |
40 | else | |
41 | echo "Stale PID, deleting" | |
42 | fi | |
43 | rm $SRV_PID | |
44 | else | |
45 | echo "HTTP server PIDFile not found" | |
46 | fi | |
47 | ||
48 | PID=$(cat $PELICAN_PID) | |
49 | if [[ $? -eq 0 ]]; then | |
50 | if alive $PID; then | |
51 | echo "Killing Pelican" | |
52 | kill $PID | |
53 | else | |
54 | echo "Stale PID, deleting" | |
55 | fi | |
56 | rm $PELICAN_PID | |
57 | else | |
58 | echo "Pelican PIDFile not found" | |
59 | fi | |
60 | } | |
61 | ||
62 | function start_up(){ | |
63 | local port=$1 | |
64 | echo "Starting up Pelican and HTTP server" | |
65 | shift | |
66 | $PELICAN --debug --autoreload -r $INPUTDIR -o $OUTPUTDIR -s $CONFFILE $PELICANOPTS & | |
67 | pelican_pid=$! | |
68 | echo $pelican_pid > $PELICAN_PID | |
69 | cd $OUTPUTDIR | |
70 | $PY -m pelican.server $port & | |
71 | srv_pid=$! | |
72 | echo $srv_pid > $SRV_PID | |
73 | cd $BASEDIR | |
74 | sleep 1 | |
75 | if ! alive $pelican_pid ; then | |
76 | echo "Pelican didn't start. Is the Pelican package installed?" | |
77 | return 1 | |
78 | elif ! alive $srv_pid ; then | |
79 | echo "The HTTP server didn't start. Is there another service using port" $port "?" | |
80 | return 1 | |
81 | fi | |
82 | echo 'Pelican and HTTP server processes now running in background.' | |
83 | } | |
84 | ||
85 | ### | |
86 | # MAIN | |
87 | ### | |
88 | [[ ($# -eq 0) || ($# -gt 2) ]] && usage | |
89 | port='' | |
90 | [[ $# -eq 2 ]] && port=$2 | |
91 | ||
92 | if [[ $1 == "stop" ]]; then | |
93 | shut_down | |
94 | elif [[ $1 == "restart" ]]; then | |
95 | shut_down | |
96 | start_up $port | |
97 | elif [[ $1 == "start" ]]; then | |
98 | if ! start_up $port; then | |
99 | shut_down | |
100 | fi | |
101 | else | |
102 | usage | |
103 | fi |