diff options
Diffstat (limited to 'develop_server.sh')
-rwxr-xr-x | develop_server.sh | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/develop_server.sh b/develop_server.sh new file mode 100755 index 0000000..d49f866 --- /dev/null +++ b/develop_server.sh @@ -0,0 +1,103 @@ +#!/usr/bin/env bash +## +# This section should match your Makefile +## +PELICAN=pelican +PELICANOPTS=$pelicanopts + +BASEDIR=$(pwd) +INPUTDIR=$BASEDIR/content +OUTPUTDIR=$BASEDIR/output +CONFFILE=$BASEDIR/pelicanconf.py + +DEVCONF=$BASEDIR/.pelican.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)" + echo "This starts pelican in debug and reload mode and then launches" + echo "A pelican.server to help site development. It doesn't read" + echo "your pelican options so you edit any paths in your Makefile" + echo "you will need to edit it 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 "Killing pelican.server" + kill $PID + else + echo "Stale PID, deleting" + fi + rm $SRV_PID + else + echo "pelican.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(){ + echo "Starting up Pelican and pelican.server" + + sed -e 's|SITEURL.*|SITEURL=\"http://localhost:8000\"|' -e 's|DISQUS_SITENAME.*||' $CONFFILE > $DEVCONF + + shift + $PELICAN --debug --autoreload -r $INPUTDIR -o $OUTPUTDIR -s $DEVCONF $PELICANOPTS & + pelican_pid=$! + echo $pelican_pid > $PELICAN_PID + cd $OUTPUTDIR + python -m pelican.server & + 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 "pelican.server didn't start. Is the pelican package installed?" + return 1 + fi + echo 'Pelican and pelican.server processes now running in background.' +} + +### +# MAIN +### +[[ $# -ne 1 ]] && usage +if [[ $1 == "stop" ]]; then + shut_down +elif [[ $1 == "restart" ]]; then + shut_down + start_up +elif [[ $1 == "start" ]]; then + if ! start_up; then + shut_down + fi +else + usage +fi |