forked from varia/varia.website
104 lines
2.2 KiB
Bash
104 lines
2.2 KiB
Bash
|
#!/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
|
||
|
mkdir -p $OUTPUTDIR && 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
|