2012-08-27 13:09:25 -07:00
|
|
|
#!/usr/bin/env bash
|
2012-07-08 17:50:18 -07:00
|
|
|
##
|
|
|
|
|
# This section should match your Makefile
|
|
|
|
|
##
|
2014-02-08 14:32:58 -08:00
|
|
|
PELICAN=$${PELICAN:-$pelican}
|
2012-07-08 17:50:18 -07:00
|
|
|
PELICANOPTS=$pelicanopts
|
|
|
|
|
|
2012-08-23 07:58:39 -07:00
|
|
|
BASEDIR=$$(pwd)
|
2012-07-08 17:50:18 -07:00
|
|
|
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(){
|
2013-07-07 13:27:50 +02:00
|
|
|
echo "usage: $$0 (stop) (start) (restart) [port]"
|
2013-12-11 21:09:02 -08:00
|
|
|
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."
|
2012-07-08 17:50:18 -07:00
|
|
|
exit 3
|
|
|
|
|
}
|
|
|
|
|
|
2013-03-02 20:05:13 -06:00
|
|
|
function alive() {
|
|
|
|
|
kill -0 $$1 >/dev/null 2>&1
|
|
|
|
|
}
|
|
|
|
|
|
2012-07-08 17:50:18 -07:00
|
|
|
function shut_down(){
|
2013-03-02 20:05:13 -06:00
|
|
|
PID=$$(cat $$SRV_PID)
|
|
|
|
|
if [[ $$? -eq 0 ]]; then
|
|
|
|
|
if alive $PID; then
|
2013-12-11 21:09:02 -08:00
|
|
|
echo "Stopping HTTP server"
|
2012-07-08 17:50:18 -07:00
|
|
|
kill $$PID
|
|
|
|
|
else
|
|
|
|
|
echo "Stale PID, deleting"
|
|
|
|
|
fi
|
|
|
|
|
rm $$SRV_PID
|
|
|
|
|
else
|
2013-12-11 21:09:02 -08:00
|
|
|
echo "HTTP server PIDFile not found"
|
2012-07-08 17:50:18 -07:00
|
|
|
fi
|
|
|
|
|
|
2013-03-02 20:05:13 -06:00
|
|
|
PID=$$(cat $$PELICAN_PID)
|
|
|
|
|
if [[ $$? -eq 0 ]]; then
|
|
|
|
|
if alive $$PID; then
|
2012-07-08 17:50:18 -07:00
|
|
|
echo "Killing Pelican"
|
|
|
|
|
kill $$PID
|
|
|
|
|
else
|
|
|
|
|
echo "Stale PID, deleting"
|
|
|
|
|
fi
|
|
|
|
|
rm $$PELICAN_PID
|
|
|
|
|
else
|
|
|
|
|
echo "Pelican PIDFile not found"
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function start_up(){
|
2013-07-07 13:27:50 +02:00
|
|
|
local port=$$1
|
2013-12-11 21:09:02 -08:00
|
|
|
echo "Starting up Pelican and HTTP server"
|
2012-07-08 17:50:18 -07:00
|
|
|
shift
|
|
|
|
|
$$PELICAN --debug --autoreload -r $$INPUTDIR -o $$OUTPUTDIR -s $$CONFFILE $$PELICANOPTS &
|
2013-03-02 20:05:13 -06:00
|
|
|
pelican_pid=$$!
|
|
|
|
|
echo $$pelican_pid > $$PELICAN_PID
|
2012-07-08 17:50:18 -07:00
|
|
|
cd $$OUTPUTDIR
|
2013-07-07 13:27:50 +02:00
|
|
|
$PY -m pelican.server $$port &
|
2013-03-02 20:05:13 -06:00
|
|
|
srv_pid=$$!
|
|
|
|
|
echo $$srv_pid > $$SRV_PID
|
2012-07-08 17:50:18 -07:00
|
|
|
cd $$BASEDIR
|
2013-03-02 20:05:13 -06:00
|
|
|
sleep 1
|
|
|
|
|
if ! alive $$pelican_pid ; then
|
2013-12-11 21:09:02 -08:00
|
|
|
echo "Pelican didn't start. Is the Pelican package installed?"
|
2013-03-02 20:05:13 -06:00
|
|
|
return 1
|
|
|
|
|
elif ! alive $$srv_pid ; then
|
2014-06-30 06:40:19 -07:00
|
|
|
echo "The HTTP server didn't start. Is there another service using port" $$port "?"
|
2013-03-02 20:05:13 -06:00
|
|
|
return 1
|
|
|
|
|
fi
|
2013-12-11 21:09:02 -08:00
|
|
|
echo 'Pelican and HTTP server processes now running in background.'
|
2012-07-08 17:50:18 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
###
|
|
|
|
|
# MAIN
|
|
|
|
|
###
|
2013-07-07 13:27:50 +02:00
|
|
|
[[ ($$# -eq 0) || ($$# -gt 2) ]] && usage
|
|
|
|
|
port=''
|
|
|
|
|
[[ $$# -eq 2 ]] && port=$$2
|
|
|
|
|
|
2012-07-08 17:50:18 -07:00
|
|
|
if [[ $$1 == "stop" ]]; then
|
|
|
|
|
shut_down
|
|
|
|
|
elif [[ $$1 == "restart" ]]; then
|
|
|
|
|
shut_down
|
2013-07-07 13:27:50 +02:00
|
|
|
start_up $$port
|
2012-07-08 17:50:18 -07:00
|
|
|
elif [[ $$1 == "start" ]]; then
|
2013-07-07 13:27:50 +02:00
|
|
|
if ! start_up $$port; then
|
2013-12-11 21:09:02 -08:00
|
|
|
shut_down
|
2013-03-02 20:05:13 -06:00
|
|
|
fi
|
2012-07-08 17:50:18 -07:00
|
|
|
else
|
|
|
|
|
usage
|
|
|
|
|
fi
|