diff --git a/README.md b/README.md index c3439c2..fc223cb 100644 --- a/README.md +++ b/README.md @@ -76,8 +76,8 @@ also needs **Project: Read** there. ## Every 30 minutes, on a server -Copy the repo to the server, create `ctf_status.env` there (it is gitignored, so it -does not travel with the code), then: +Copy the repo to the server, create `ctf_status.env` or `.env` there (both are gitignored, so they +do not travel with the code), then: ```sh ./install-timer.sh diff --git a/install-timer.sh b/install-timer.sh index e14db94..c310bde 100755 --- a/install-timer.sh +++ b/install-timer.sh @@ -1,6 +1,6 @@ #!/usr/bin/env sh # Install the 30-minute HedgeDoc refresh as systemd *user* units. -# Run it as the user that owns ctf_status.env, on the machine that should do the +# Run it as the user that owns ctf_status.env / .env, on the machine that should do the # polling. Re-running it is safe; it just overwrites the units. set -eu @@ -8,13 +8,19 @@ dir=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd -P) units="${XDG_CONFIG_HOME:-$HOME/.config}/systemd/user" [ -x "$dir/ctf_status.py" ] || { echo "no executable ctf_status.py in $dir" >&2; exit 1; } -[ -f "$dir/ctf_status.env" ] || { - echo "no $dir/ctf_status.env — copy ctf_status.env.example to it first" >&2; exit 1; } -grep -q '^HEDGEDOC_NOTE=..*' "$dir/ctf_status.env" || { - echo "set HEDGEDOC_NOTE= in $dir/ctf_status.env first" >&2; exit 1; } -grep -q '^CHALLS_REPO_URL=..*' "$dir/ctf_status.env" || { - echo "set CHALLS_REPO_URL= in $dir/ctf_status.env first" >&2; exit 1; } -chmod 600 "$dir/ctf_status.env" +# ctf_status.py reads ctf_status.env and .env; either (or both) will do +set -- +for f in "$dir/ctf_status.env" "$dir/.env"; do + if [ -f "$f" ]; then set -- "$@" "$f"; fi +done +[ $# -gt 0 ] || { + echo "no ctf_status.env or .env in $dir — copy ctf_status.env.example to one first" >&2 + exit 1; } +# the timer runs --update --challs, which need these two +for key in HEDGEDOC_NOTE CHALLS_REPO_URL; do + grep -qi "^$key=..*" "$@" || { echo "set $key=... in $* first" >&2; exit 1; } +done +chmod 600 "$@" mkdir -p "$units" for u in ctf-status.service ctf-status.timer; do