You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
103 lines
2.1 KiB
103 lines
2.1 KiB
#!/usr/bin/env bash |
|
## |
|
# This section should match your Makefile |
|
## |
|
PY=${PY:-python} |
|
PELICAN=${PELICAN:-pelican} |
|
PELICANOPTS= |
|
|
|
BASEDIR=$(pwd) |
|
INPUTDIR=$BASEDIR/content |
|
OUTPUTDIR=$BASEDIR/output |
|
CONFFILE=$BASEDIR/pelicanconf.py |
|
|
|
### |
|
# Don't change stuff below here unless you are sure |
|
### |
|
|
|
SRV_PID=$BASEDIR/srv.pid |
|
PELICAN_PID=$BASEDIR/pelican.pid |
|
|
|
function usage(){ |
|
echo "usage: $0 (stop) (start) (restart) [port]" |
|
echo "This starts Pelican in debug and reload mode and then launches" |
|
echo "an HTTP server to help site development. It doesn't read" |
|
echo "your Pelican settings, so if you edit any paths in your Makefile" |
|
echo "you will need to edit your settings as well." |
|
exit 3 |
|
} |
|
|
|
function alive() { |
|
kill -0 $1 >/dev/null 2>&1 |
|
} |
|
|
|
function shut_down(){ |
|
PID=$(cat $SRV_PID) |
|
if [[ $? -eq 0 ]]; then |
|
if alive $PID; then |
|
echo "Stopping HTTP server" |
|
kill $PID |
|
else |
|
echo "Stale PID, deleting" |
|
fi |
|
rm $SRV_PID |
|
else |
|
echo "HTTP server PIDFile not found" |
|
fi |
|
|
|
PID=$(cat $PELICAN_PID) |
|
if [[ $? -eq 0 ]]; then |
|
if alive $PID; then |
|
echo "Killing Pelican" |
|
kill $PID |
|
else |
|
echo "Stale PID, deleting" |
|
fi |
|
rm $PELICAN_PID |
|
else |
|
echo "Pelican PIDFile not found" |
|
fi |
|
} |
|
|
|
function start_up(){ |
|
local port=$1 |
|
echo "Starting up Pelican and HTTP server" |
|
shift |
|
$PELICAN --debug --autoreload -r $INPUTDIR -o $OUTPUTDIR -s $CONFFILE $PELICANOPTS & |
|
pelican_pid=$! |
|
echo $pelican_pid > $PELICAN_PID |
|
cd $OUTPUTDIR |
|
$PY -m pelican.server $port & |
|
srv_pid=$! |
|
echo $srv_pid > $SRV_PID |
|
cd $BASEDIR |
|
sleep 1 |
|
if ! alive $pelican_pid ; then |
|
echo "Pelican didn't start. Is the Pelican package installed?" |
|
return 1 |
|
elif ! alive $srv_pid ; then |
|
echo "The HTTP server didn't start. Is there another service using port" $port "?" |
|
return 1 |
|
fi |
|
echo 'Pelican and HTTP server processes now running in background.' |
|
} |
|
|
|
### |
|
# MAIN |
|
### |
|
[[ ($# -eq 0) || ($# -gt 2) ]] && usage |
|
port='' |
|
[[ $# -eq 2 ]] && port=$2 |
|
|
|
if [[ $1 == "stop" ]]; then |
|
shut_down |
|
elif [[ $1 == "restart" ]]; then |
|
shut_down |
|
start_up $port |
|
elif [[ $1 == "start" ]]; then |
|
if ! start_up $port; then |
|
shut_down |
|
fi |
|
else |
|
usage |
|
fi
|
|
|