diff options
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 "$@" |