From 934bc9a2857865b726dab0f63a9e7a2f6048ba50 Mon Sep 17 00:00:00 2001 From: Egor Tensin Date: Tue, 30 May 2023 12:17:39 +0200 Subject: docker: rename scripts --- docker/in_cron.sh | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100755 docker/in_cron.sh (limited to 'docker/in_cron.sh') diff --git a/docker/in_cron.sh b/docker/in_cron.sh new file mode 100755 index 0000000..d23ab70 --- /dev/null +++ b/docker/in_cron.sh @@ -0,0 +1,55 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021 Egor Tensin +# This file is part of the "cgitize" project. +# For details, see https://github.com/egor-tensin/cgitize. +# Distributed under the MIT License. + +set -o errexit -o nounset -o pipefail +shopt -s inherit_errexit lastpipe + +schedule_to_cron() { + local schedule + for schedule; do + case "$schedule" in + minutely) echo '* * * * *' ;; + 15min) echo '*/15 * * * *' ;; + hourly) echo '0 * * * *' ;; + daily) echo '0 0 * * *' ;; + weekly) echo '0 0 * * 1' ;; + monthly) echo '0 0 1 * *' ;; + *) + echo "$schedule" + ;; + esac + done +} + +setup_cron_task() { + local schedule + schedule="${SCHEDULE:-once}" + + if [ "$schedule" = once ]; then + exec "$@" + fi + + schedule="$( schedule_to_cron "$schedule" )" + + if [ -n "${SCHEDULE_ON_START:+x}" ]; then + # Run the task once when the container is started. + "$@" + fi + + local crontab + crontab="$schedule" + crontab="$crontab$( printf ' %q' "$@" )" + + echo "$crontab" | crontab - + exec crond -f +} + +main() { + setup_cron_task "$@" +} + +main "$@" -- cgit v1.2.3