diff options
author | Egor Tensin <Egor.Tensin@gmail.com> | 2022-12-03 17:54:29 +0100 |
---|---|---|
committer | Egor Tensin <Egor.Tensin@gmail.com> | 2022-12-03 17:57:25 +0100 |
commit | 11b442988dc4bb8c1d562c9768e8a3fb685b4443 (patch) | |
tree | a65b229fbe18564e75b1c1adcd8cd3922188e764 /docker/entrypoint.sh | |
parent | v4.0.4 (diff) | |
download | cgitize-11b442988dc4bb8c1d562c9768e8a3fb685b4443.tar.gz cgitize-11b442988dc4bb8c1d562c9768e8a3fb685b4443.zip |
docker: factor out cron stuff into schedule.sh
It can be easily reused that way.
Diffstat (limited to 'docker/entrypoint.sh')
-rwxr-xr-x | docker/entrypoint.sh | 53 |
1 files changed, 7 insertions, 46 deletions
diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 4ca1304..59d4814 100755 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -6,6 +6,11 @@ # Distributed under the MIT License. set -o errexit -o nounset -o pipefail +shopt -s inherit_errexit lastpipe + +script_dir="$( dirname -- "${BASH_SOURCE[0]}" )" +script_dir="$( cd -- "$script_dir" && pwd )" +readonly script_dir readonly base_dir=/usr/src readonly cfg_path=/etc/cgitize/cgitize.toml @@ -13,6 +18,7 @@ readonly cfg_path=/etc/cgitize/cgitize.toml secure_repo_dir() { local dir dir="$( /get_output_dir.py -- "$cfg_path" )" + chmod -- o-rwx "$dir" # This is required so that nginx can access the directory. @@ -21,54 +27,9 @@ secure_repo_dir() { chown -- :101 "$dir" } -schedule_to_cron() { - local schedule - for schedule; do - case "$schedule" in - 15min) echo '*/15 * * * *' ;; - hourly) echo '0 * * * *' ;; - daily) echo '0 0 * * *' ;; - weekly) echo '0 0 * * 1' ;; - monthly) echo '0 0 1 * *' ;; - *) - echo "$schedule" - ;; - esac - done -} - -make_task_script() { - echo "#!/bin/bash -cd -- "$base_dir" &&$( printf -- ' %q' "$@" )" -} - -setup_cron_task() { - local schedule - schedule="${SCHEDULE:-once}" - - if [ "$schedule" = once ]; then - exec "$@" - fi - - schedule="$( schedule_to_cron "$schedule" )" - - make_task_script "$@" > /task.sh - chmod +x /task.sh - - # Run the task once when the container is started, regardless of schedule. - /task.sh - - local crontab - crontab="$schedule /task.sh -# This is the new crontab." - - echo "$crontab" | crontab - - exec crond -f -} - main() { secure_repo_dir - setup_cron_task "$@" + exec "$script_dir/schedule.sh" "$@" } main "$@" |