This functionality enables users to manage a global crontab for the Dokku user that contains all scheduled tasks across all apps. Alternative schedulers can implement cron tasks as desired.
57 lines
1.3 KiB
Bash
Executable File
57 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -eo pipefail
|
|
[[ $DOKKU_TRACE ]] && set -x
|
|
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
|
|
|
cmd-run() {
|
|
declare desc="runs command in container based on app image"
|
|
declare cmd="run"
|
|
[[ "$1" == "$cmd" ]] && shift 1
|
|
declare APP=""
|
|
local SCHEDULER_ID
|
|
declare -a RUN_ENV
|
|
RUN_ENV=()
|
|
while [[ $# -gt 0 ]]; do
|
|
case $1 in
|
|
--cron-id=*)
|
|
local arg=$(printf "%s" "$1" | sed -E 's/(^--cron-id=)//g')
|
|
SCHEDULER_ID+=("$arg")
|
|
shift
|
|
;;
|
|
--cron-id)
|
|
if [[ ! $2 ]]; then
|
|
dokku_log_warn "expected $1 to have an argument"
|
|
break
|
|
fi
|
|
CRON_ID+=("$2")
|
|
shift 2
|
|
;;
|
|
-e=* | --env=*)
|
|
local arg=$(printf "%s" "$1" | sed -E 's/(^-e=)|(^--env=)//g')
|
|
RUN_ENV+=("$arg")
|
|
shift
|
|
;;
|
|
-e | --env)
|
|
if [[ ! $2 ]]; then
|
|
dokku_log_warn "expected $1 to have an argument"
|
|
break
|
|
fi
|
|
RUN_ENV+=("$2")
|
|
shift 2
|
|
;;
|
|
*)
|
|
APP="$1"
|
|
shift
|
|
break
|
|
;;
|
|
esac
|
|
done
|
|
|
|
verify_app_name "$APP"
|
|
|
|
local DOKKU_SCHEDULER=$(get_app_scheduler "$APP")
|
|
DOKKU_CRON_ID="$CRON_ID" plugn trigger scheduler-run "$DOKKU_SCHEDULER" "$APP" "${#RUN_ENV[@]}" "${RUN_ENV[@]}" "$@"
|
|
}
|
|
|
|
cmd-run "$@"
|