1
0
Fork 0
forked from github/pelican
pelican-theme/pelican/tools/templates/develop_server.sh.in
Justin Mayer a9d1fdae3d PY and PELICAN env variable overrides for Make
This allows the user to set PY and/or PELICAN environment variable
overrides, which will be respected by the Makefile and devserver.sh.
If, for example, the default Python on your system were Python 3 and
you wanted to run Make with Python 2, using bash you could run
`PY=python2 make`. Refs #915.
2014-02-08 14:32:58 -08:00

102 lines
2.2 KiB
Bash
Executable file

#!/usr/bin/env bash
##
# This section should match your Makefile
##
PELICAN=$${PELICAN:-$pelican}
PELICANOPTS=$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 8000?"
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