implémenter --show-ctnow, --force-ctnow et -r
This commit is contained in:
parent
d40ca86347
commit
acb281dac6
54
uscrontab
54
uscrontab
|
@ -207,7 +207,7 @@ OPTIONS
|
|||
utilisé. Si name est vide ou vaut \$USER (soit $USER en l'occurence),
|
||||
copier le fichier spécifié vers le chemin $USCRONTAB_USERFILE
|
||||
Sinon, copier le fichier spécifié vers $USCRONTAB_USERDIR/name
|
||||
-r, --remove XXX non implémenté
|
||||
-r, --remove
|
||||
Supprimer le script uscrontab spécifié. L'argument doit être le nom du
|
||||
script à supprimer. Si l'argument n'est pas spécifié ou vaut \$USER
|
||||
(soit $USER en l'occurence), supprimer le fichier $USCRONTAB_USERFILE
|
||||
|
@ -223,11 +223,6 @@ OPTIONS
|
|||
$USCRONTAB_USERDIR
|
||||
-n, --fake
|
||||
Afficher au lieu de les exécuter les commandes qui doivent être lancées
|
||||
--show-ctnow XXX non implémenté
|
||||
Afficher l'heure de référence au format crontab 'min hou day mon dow'
|
||||
--force-ctnow 'min hou day mon dow' XXX non implémenté
|
||||
Pour le développement, forcer la valeur de l'heure de référence. Il faut
|
||||
respecter le format, sinon les résultats ne sont pas garantis.
|
||||
|
||||
OPTIONS AVANCEES
|
||||
--lock LOCKFILE
|
||||
|
@ -253,7 +248,16 @@ OPTIONS AVANCEES
|
|||
de faire des tests par exemple sur l'environnement avant de lancer les
|
||||
scripts planifiés. Si l'environnement ne convient pas, il suffit au
|
||||
script de contrôle de retourner le code d'erreur spécifique pour arrêter
|
||||
le traitement."
|
||||
le traitement.
|
||||
--show-ctnow
|
||||
Afficher l'heure de référence au format crontab 'min hou day mon dow'
|
||||
Cette valeur peut être utilisée avec l'option --force-ctnow dans des
|
||||
tests pour reproduire une condition spécifique.
|
||||
--force-ctnow 'min hou day mon dow'
|
||||
Pour le développement ou des tests, forcer la valeur de l'heure de
|
||||
référence. Il faut respecter le format, sinon les résultats ne sont pas
|
||||
garantis. Le mieux est de reprendre le résultat de l'option --show-ctnow
|
||||
en le modifiant un peu si nécessaire."
|
||||
}
|
||||
|
||||
function set_usercrontabs() {
|
||||
|
@ -266,6 +270,18 @@ function set_usercrontabs() {
|
|||
eval "${1:-usercrontabs}"'=("${_userfile[@]}" "${_userdir[@]}")'
|
||||
}
|
||||
|
||||
function get_usercrontab() {
|
||||
# trouver le chemin correspondant au crontab $1. Si $1 n'est pas spécifié ou
|
||||
# vaut $USER, afficher $USCRONTAB_USERFILE, sinon afficher $USCRONTAB_USERDIR/$1
|
||||
local name="$1"
|
||||
[ "$name" == "$USER" ] && name=
|
||||
if [ -n "$name" ]; then
|
||||
echo "$USCRONTAB_USERDIR/$name"
|
||||
else
|
||||
echo "$USCRONTAB_USERFILE"
|
||||
fi
|
||||
}
|
||||
|
||||
USCRONTAB_CTLINE="* * * * * $script"
|
||||
USCRONTAB_LOCKDELAY=8
|
||||
USCRONTAB_STOPEC=101
|
||||
|
@ -283,14 +299,17 @@ parse_opts "${PRETTYOPTS[@]}" \
|
|||
--help '$exit_with display_help' \
|
||||
-A,--add,--install action=install \
|
||||
-R,--remove,--uninstall action=uninstall \
|
||||
-e,--edit action=edit \
|
||||
-a,--add action=add \
|
||||
-r,--remove action=remove \
|
||||
-l,--list action=list \
|
||||
-n,--fake fake=1 \
|
||||
--lock: lockfile= \
|
||||
--lockdelay: lockdelay= \
|
||||
-n,--fake fake=1 \
|
||||
-c,--continuous continuous=1 \
|
||||
-k:,--stop: USCRONTAB_STOPEC= \
|
||||
-l,--list action=list \
|
||||
-e,--edit action=edit \
|
||||
-r,--remove action=remove \
|
||||
--show-ctnow action=show-ctnow \
|
||||
--force-ctnow: __CTRESOLVE_CTNOW= \
|
||||
@ args -- "$@" && set -- "${args[@]}" || die "$args"
|
||||
|
||||
crontab="$1"; shift
|
||||
|
@ -306,12 +325,15 @@ if [ "$action" == "edit" ]; then
|
|||
touch "$crontab" || die
|
||||
chmod 640 "$crontab"
|
||||
fi
|
||||
"${EDITOR:-vi}" "$crontab"
|
||||
"${EDITOR:-vi}" "$crontab" || die
|
||||
exit 0
|
||||
|
||||
elif [ "$action" == "add" ]; then
|
||||
ewarn "XXX non implémenté"
|
||||
exit 0
|
||||
|
||||
elif [ "$action" == "remove" ]; then
|
||||
[ -n "$crontab" ] && ewarn "$crontab: cet argument a été ignoré"
|
||||
crontab="$USCRONTAB_USERFILE"
|
||||
crontab="$(get_usercrontab "$crontab")"
|
||||
if [ -f "$crontab" ]; then
|
||||
ask_yesno "Voulez-vous supprimer le fichier $crontab?" C || die
|
||||
enote "Suppression de $crontab"
|
||||
|
@ -347,6 +369,10 @@ elif [ "$action" == "list" ]; then
|
|||
cat "$ctfile"
|
||||
done
|
||||
exit $r
|
||||
|
||||
elif [ "$action" == "show-ctnow" ]; then
|
||||
ctnow
|
||||
exit 0
|
||||
fi
|
||||
|
||||
[ -z "$crontab" -o -f "$crontab" ] || die "$crontab: fichier introuvable"
|
||||
|
|
Loading…
Reference in New Issue