mirror of
https://github.com/getpelican/pelican.git
synced 2025-10-15 20:28:56 +02:00
If the output directory does not exist the 'cd' will fail, but the script will resume, starting the server in the base directory. Therefore we first make sure the output directory actually exists.
102 lines
2.2 KiB
Bash
Executable file
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
|
|
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
|