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
|
||||
et chacun des fichiers du répertoire
|
||||
$USCRONTAB_USERDIR
|
||||
-N, --nop
|
||||
Ne pas examiner la planification. Traiter uniquement l'option --osvar le
|
||||
cas échéant.
|
||||
-n, --fake
|
||||
Afficher au lieu de les exécuter les commandes qui doivent être lancées
|
||||
-P, --pause-for NBMINS
|
||||
|
@ -248,6 +251,9 @@ OPTIONS
|
|||
-f, --force
|
||||
Forcer l'exécution de la planification, même si elle a été mise en 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
|
||||
--lock LOCKFILE
|
||||
|
@ -356,6 +362,7 @@ continuous=
|
|||
force_ctnow=
|
||||
pause=
|
||||
force=
|
||||
osvars=()
|
||||
parse_opts "${PRETTYOPTS[@]}" \
|
||||
--help '$exit_with display_help' \
|
||||
-A,--add,--install action=install \
|
||||
|
@ -365,11 +372,13 @@ parse_opts "${PRETTYOPTS[@]}" \
|
|||
-a,--add action=add \
|
||||
-r,--remove action=remove \
|
||||
-l,--list action=list \
|
||||
-N,--nop action=nop \
|
||||
-n,--fake fake=1 \
|
||||
-P:,--pause-for: '$action=pause; set@ pause' \
|
||||
-p,--pause action=pause \
|
||||
-Y,--unpause action=unpause \
|
||||
-f,--force force=1 \
|
||||
-v:,--osvar: osvars \
|
||||
--lock: lockfile= \
|
||||
--lockdelay: lockdelay= \
|
||||
-c,--continuous continuous=1 \
|
||||
|
@ -382,11 +391,31 @@ parse_opts "${PRETTYOPTS[@]}" \
|
|||
-G,--any-ctnow __CTRESOLVE_CTNOW="**ANY**" \
|
||||
@ args -- "$@" && set -- "${args[@]}" || die "$args"
|
||||
|
||||
uscrontab="$1"; shift
|
||||
|
||||
pausefile="$USCRONTAB_USERFILE.pauseuntil"
|
||||
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
|
||||
[ -n "$pause" ] || pause=1440
|
||||
if [ "$pause" -lt 0 ]; then
|
||||
|
@ -489,6 +518,9 @@ elif [ "$action" == "list" ]; then
|
|||
elif [ "$action" == "show-ctnow" ]; then
|
||||
ctnow "$now"
|
||||
exit 0
|
||||
|
||||
elif [ "$action" == "nop" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
[ -z "$uscrontab" -o -f "$uscrontab" ] || die "$uscrontab: fichier introuvable"
|
||||
|
@ -581,7 +613,7 @@ elif [ "$action" == "run" ]; then
|
|||
local cmd
|
||||
cmd="${1%% *}"
|
||||
case "$cmd" in
|
||||
check_pidfile|remove_pidfile|elogto) return 1;;
|
||||
check_pidfile|remove_pidfile|osvar|elogto) return 1;;
|
||||
esac
|
||||
return 0
|
||||
}
|
||||
|
@ -675,6 +707,17 @@ puis supprimez le cas échéant le fichier $pidfile"
|
|||
array_del __USCRONTAB_PIDFILES "$pidfile"
|
||||
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
|
||||
# Si des variables sont spécifiées, les initialiser avant de lancer le
|
||||
|
|
Loading…
Reference in New Issue