uscrontab: support des oneshot vars
This commit is contained in:
parent
a66c0c231f
commit
cf629e62e1
49
uscrontab
49
uscrontab
|
@ -234,6 +234,9 @@ OPTIONS
|
||||||
$USCRONTAB_USERFILE
|
$USCRONTAB_USERFILE
|
||||||
et chacun des fichiers du répertoire
|
et chacun des fichiers du répertoire
|
||||||
$USCRONTAB_USERDIR
|
$USCRONTAB_USERDIR
|
||||||
|
-N, --nop
|
||||||
|
Ne pas examiner la planification. Traiter uniquement l'option --osvar le
|
||||||
|
cas échéant.
|
||||||
-n, --fake
|
-n, --fake
|
||||||
Afficher au lieu de les exécuter les commandes qui doivent être lancées
|
Afficher au lieu de les exécuter les commandes qui doivent être lancées
|
||||||
-P, --pause-for NBMINS
|
-P, --pause-for NBMINS
|
||||||
|
@ -248,6 +251,9 @@ OPTIONS
|
||||||
-f, --force
|
-f, --force
|
||||||
Forcer l'exécution de la planification, même si elle a été mise en pause
|
Forcer l'exécution de la planification, même si elle a été mise en pause
|
||||||
avec l'option --pause
|
avec l'option --pause
|
||||||
|
-v, --osvar NAME[=VALUE]
|
||||||
|
Définir une variable de type oneshot. Par défaut, VALUE vaut 1 si elle
|
||||||
|
n'est pas spécifiée.
|
||||||
|
|
||||||
OPTIONS AVANCEES
|
OPTIONS AVANCEES
|
||||||
--lock LOCKFILE
|
--lock LOCKFILE
|
||||||
|
@ -356,6 +362,7 @@ continuous=
|
||||||
force_ctnow=
|
force_ctnow=
|
||||||
pause=
|
pause=
|
||||||
force=
|
force=
|
||||||
|
osvars=()
|
||||||
parse_opts "${PRETTYOPTS[@]}" \
|
parse_opts "${PRETTYOPTS[@]}" \
|
||||||
--help '$exit_with display_help' \
|
--help '$exit_with display_help' \
|
||||||
-A,--add,--install action=install \
|
-A,--add,--install action=install \
|
||||||
|
@ -365,11 +372,13 @@ parse_opts "${PRETTYOPTS[@]}" \
|
||||||
-a,--add action=add \
|
-a,--add action=add \
|
||||||
-r,--remove action=remove \
|
-r,--remove action=remove \
|
||||||
-l,--list action=list \
|
-l,--list action=list \
|
||||||
|
-N,--nop action=nop \
|
||||||
-n,--fake fake=1 \
|
-n,--fake fake=1 \
|
||||||
-P:,--pause-for: '$action=pause; set@ pause' \
|
-P:,--pause-for: '$action=pause; set@ pause' \
|
||||||
-p,--pause action=pause \
|
-p,--pause action=pause \
|
||||||
-Y,--unpause action=unpause \
|
-Y,--unpause action=unpause \
|
||||||
-f,--force force=1 \
|
-f,--force force=1 \
|
||||||
|
-v:,--osvar: osvars \
|
||||||
--lock: lockfile= \
|
--lock: lockfile= \
|
||||||
--lockdelay: lockdelay= \
|
--lockdelay: lockdelay= \
|
||||||
-c,--continuous continuous=1 \
|
-c,--continuous continuous=1 \
|
||||||
|
@ -382,11 +391,31 @@ parse_opts "${PRETTYOPTS[@]}" \
|
||||||
-G,--any-ctnow __CTRESOLVE_CTNOW="**ANY**" \
|
-G,--any-ctnow __CTRESOLVE_CTNOW="**ANY**" \
|
||||||
@ args -- "$@" && set -- "${args[@]}" || die "$args"
|
@ args -- "$@" && set -- "${args[@]}" || die "$args"
|
||||||
|
|
||||||
uscrontab="$1"; shift
|
|
||||||
|
|
||||||
pausefile="$USCRONTAB_USERFILE.pauseuntil"
|
pausefile="$USCRONTAB_USERFILE.pauseuntil"
|
||||||
now="$(awk 'BEGIN { print int(systime() / 60) * 60 }')"
|
now="$(awk 'BEGIN { print int(systime() / 60) * 60 }')"
|
||||||
|
|
||||||
|
# ne prendre le premier argument comme un fichier que s'il existe ou s'il n'est
|
||||||
|
# pas de la forme *=*
|
||||||
|
if [[ "$1" == *=* ]]; then
|
||||||
|
if [ -f "$1" ]; then
|
||||||
|
uscrontab="$1"; shift
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
uscrontab="$1"; shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
# écrire les variables oneshot
|
||||||
|
for osvar in "${osvars[@]}"; do
|
||||||
|
if [[ "$osvar" == *=* ]]; then
|
||||||
|
splitvar "$osvar" name value
|
||||||
|
else
|
||||||
|
name="$osvar"
|
||||||
|
value=1
|
||||||
|
fi
|
||||||
|
name="${name##*/}" # au cas où...
|
||||||
|
echo -n "$value" >"$USCRONTAB_USERFILE.$name.osvar"
|
||||||
|
done
|
||||||
|
|
||||||
if [ "$action" == "pause" ]; then
|
if [ "$action" == "pause" ]; then
|
||||||
[ -n "$pause" ] || pause=1440
|
[ -n "$pause" ] || pause=1440
|
||||||
if [ "$pause" -lt 0 ]; then
|
if [ "$pause" -lt 0 ]; then
|
||||||
|
@ -489,6 +518,9 @@ elif [ "$action" == "list" ]; then
|
||||||
elif [ "$action" == "show-ctnow" ]; then
|
elif [ "$action" == "show-ctnow" ]; then
|
||||||
ctnow "$now"
|
ctnow "$now"
|
||||||
exit 0
|
exit 0
|
||||||
|
|
||||||
|
elif [ "$action" == "nop" ]; then
|
||||||
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ -z "$uscrontab" -o -f "$uscrontab" ] || die "$uscrontab: fichier introuvable"
|
[ -z "$uscrontab" -o -f "$uscrontab" ] || die "$uscrontab: fichier introuvable"
|
||||||
|
@ -581,7 +613,7 @@ elif [ "$action" == "run" ]; then
|
||||||
local cmd
|
local cmd
|
||||||
cmd="${1%% *}"
|
cmd="${1%% *}"
|
||||||
case "$cmd" in
|
case "$cmd" in
|
||||||
check_pidfile|remove_pidfile|elogto) return 1;;
|
check_pidfile|remove_pidfile|osvar|elogto) return 1;;
|
||||||
esac
|
esac
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
@ -675,6 +707,17 @@ puis supprimez le cas échéant le fichier $pidfile"
|
||||||
array_del __USCRONTAB_PIDFILES "$pidfile"
|
array_del __USCRONTAB_PIDFILES "$pidfile"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
function osvar() {
|
||||||
|
local __name __value
|
||||||
|
for __name in "$@"; do
|
||||||
|
splitvar "$__name" __name __value
|
||||||
|
if [ -f "$USCRONTAB_USERFILE.$__name.osvar" ]; then
|
||||||
|
__value="$(<"$USCRONTAB_USERFILE.$__name.osvar")"
|
||||||
|
rm "$USCRONTAB_USERFILE.$__name.osvar"
|
||||||
|
fi
|
||||||
|
_setv "$__name" "$__value"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
__ac_forgetall
|
__ac_forgetall
|
||||||
# Si des variables sont spécifiées, les initialiser avant de lancer le
|
# Si des variables sont spécifiées, les initialiser avant de lancer le
|
||||||
|
|
Loading…
Reference in New Issue