From 8ce982109588c73e384e22814b73f1e94f5b8872 Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Fri, 21 Apr 2017 16:32:54 +0400 Subject: [PATCH] =?UTF-8?q?fndate:=20am=C3=A9liorer=20l'ergonomie=20de=20l?= =?UTF-8?q?'option=20-@?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fndate | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/fndate b/fndate index 5002945..78faa74 100755 --- a/fndate +++ b/fndate @@ -63,6 +63,14 @@ OPTIONS Dans le nom spécifié, si la date est déjà présente, forcer son remplacement par la valeur spécifiée. Par défaut, le fichier n'est pas modifié si la date est déjà présente. + S'il y a au moins 2 arguments et si le premier ou le dernier argument + ressemblent à une date (ie. d/m[/y] ou @d[/m[/y]]) et qu'aucun fichier + de ce nom n'existe dans le répertoire courant, activer automatiquement + cette option, sauf si l'option --no-auto-force-date est spécifié aussi. + Les commandes suivantes sont équivalentes: + $scriptname -@ d/m/y file + $scriptname d/m/y file + $scriptname file @d/m/y -F, --format FORMAT Spécifier le format de la date à insérer dans le nom du fichier. Par défaut, FORMAT vaut 'YYMMDD-' @@ -227,6 +235,7 @@ dmove) action=move;; dcmd) action=cmd;; esac placeholder= +auto_force_date=1 force_date= format= autof= @@ -240,6 +249,7 @@ parse_opts "${PRETTYOPTS[@]}" \ -c,--cmd action=cmd \ --string action=string \ -P:,--placeholder: placeholder= \ + --no-auto-force-date auto_force_date= \ -@:,--force-date: force_date= \ -F:,--format: format= \ -s,--short '$format=YYMMDD; autof=1' \ @@ -247,6 +257,25 @@ parse_opts "${PRETTYOPTS[@]}" \ --autof autof=1 \ @ args -- "$@" && set -- "${args[@]}" || die "$args" +if [ $# -gt 1 -a -z "$force_date" -a -n "$auto_force_date" ]; then + # si le premier ou le dernier argument ressemblent à une date + f="$1"; f2="${f#@}" + l="${@:$#}"; l2="${l#@}" + if [[ "$f" == */* ]] && [ -z "${f//[0-9\/]}" -a ! -e "$f" ]; then + force_date="$f" + shift + elif [[ "$f" == @* ]] && [ -z "${f2//[0-9\/]}" -a ! -e "$f2" ]; then + force_date="$f2" + shift + elif [[ "$l" == */* ]] && [ -z "${l//[0-9\/]}" -a ! -e "$l" ]; then + force_date="$l" + set -- "${@:1:$(($# - 1))}" + elif [[ "$l" == @* ]] && [ -z "${l2//[0-9\/]}" -a ! -e "$l2" ]; then + force_date="$l2" + set -- "${@:1:$(($# - 1))}" + fi +fi + [ -n "$create" ] || create=file [ -n "$placeholder" ] || placeholder="~~" [ -n "$force_date" ] && setx force_date=parse_date "$force_date"