Files
fluxer/fluxer_docs/serve.sh
T

43 lines
959 B
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
VENV="$HERE/.venv"
ADDR="${ZENSICAL_DEV_ADDR:-0.0.0.0:8000}"
LOG="${ZENSICAL_LOG:-/tmp/zensical-serve.log}"
PORT="${ADDR##*:}"
cd "$HERE"
ensure_env() {
if [ ! -x "$VENV/bin/python" ]; then
python3 -m venv "$VENV"
"$VENV/bin/python" -m pip install --quiet --upgrade pip
fi
"$VENV/bin/python" -m pip install --quiet --require-virtualenv -r "$HERE/requirements.txt"
}
case "${1:-serve}" in
--bootstrap)
ensure_env
;;
--daemon)
ensure_env
if curl -sf -o /dev/null "http://127.0.0.1:${PORT}/" 2>/dev/null; then
echo "zensical already serving on ${ADDR}"
exit 0
fi
setsid "$VENV/bin/zensical" serve -a "$ADDR" >"$LOG" 2>&1 &
disown 2>/dev/null || true
echo "zensical serving on ${ADDR} (logs: ${LOG})"
;;
serve)
ensure_env
exec "$VENV/bin/zensical" serve -a "$ADDR"
;;
*)
ensure_env
exec "$VENV/bin/zensical" "$@"
;;
esac