Files: b03b0e7e0031791edadf1e272b343d8ee21860bf / develop_server.sh
2225 bytesRaw
1 | |
2 | ## |
3 | # This section should match your Makefile |
4 | ## |
5 | PY=${PY:-python3} |
6 | PELICAN=${PELICAN:-pelican} |
7 | PELICANOPTS= |
8 | |
9 | BASEDIR=$(pwd) |
10 | INPUTDIR=$BASEDIR/content |
11 | OUTPUTDIR=$BASEDIR/output |
12 | CONFFILE=$BASEDIR/developconf.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 | mkdir -p $OUTPUTDIR && 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 |
104 |
Built with git-ssb-web