fndate: maj doc et améliorations ergonomiques

This commit is contained in:
Jephté Clain 2017-05-04 21:49:56 +04:00
parent d5f4ae25c0
commit c25160c63b
1 changed files with 33 additions and 21 deletions

54
fndate
View File

@ -60,14 +60,14 @@ OPTIONS
PLACEHOLDER vaut ~~. Si le nom spécifié ne contient pas le PLACEHOLDER, PLACEHOLDER vaut ~~. Si le nom spécifié ne contient pas le PLACEHOLDER,
il est placé au début. il est placé au début.
-@, --force-date DATE -@, --force-date DATE
Dans le nom spécifié, si la date est déjà présente, forcer son Si une date du format attendu est déjà présente dans le nom du fichier,
remplacement par la valeur spécifiée. Par défaut, le fichier n'est pas forcer son remplacement par la valeur spécifiée. Par défaut, le fichier
modifié si la date est déjà présente. 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 Si le premier ou le dernier argument de ce script ressemblent à une date
ressemblent à une date (ie. d/m[/y] ou @d[/m[/y]]) et qu'aucun fichier (ie. d/m[/y] ou @d[/m[/y]]) et qu'aucun fichier de ce nom n'existe dans
de ce nom n'existe dans le répertoire courant, activer automatiquement le répertoire courant, activer automatiquement cette option, sauf si
cette option, sauf si l'option --no-auto-force-date est spécifié aussi. l'option --no-auto-force-date est spécifiée aussi. Ainsi, les commandes
Les commandes suivantes sont équivalentes: suivantes sont équivalentes:
$scriptname -@ d/m/y file $scriptname -@ d/m/y file
$scriptname d/m/y file $scriptname d/m/y file
$scriptname file @d/m/y $scriptname file @d/m/y
@ -257,22 +257,24 @@ parse_opts "${PRETTYOPTS[@]}" \
--autof autof=1 \ --autof autof=1 \
@ args -- "$@" && set -- "${args[@]}" || die "$args" @ args -- "$@" && set -- "${args[@]}" || die "$args"
if [ $# -gt 1 -a -z "$force_date" -a -n "$auto_force_date" ]; then if [ -z "$force_date" -a -n "$auto_force_date" ]; then
# si le premier ou le dernier argument ressemblent à une date # si le premier ou le dernier argument ressemblent à une date
f="$1"; f2="${f#@}" f="$1"; f2="${f#@}"
l="${@:$#}"; l2="${l#@}"
if [[ "$f" == */* ]] && [ -z "${f//[0-9\/]}" -a ! -e "$f" ]; then if [[ "$f" == */* ]] && [ -z "${f//[0-9\/]}" -a ! -e "$f" ]; then
force_date="$f" force_date="$f"
shift shift
elif [[ "$f" == @* ]] && [ -z "${f2//[0-9\/]}" -a ! -e "$f2" ]; then elif [[ "$f" == @* ]] && [ -z "${f2//[0-9\/]}" -a ! -e "$f2" ]; then
force_date="$f2" force_date="$f2"
shift shift
elif [[ "$l" == */* ]] && [ -z "${l//[0-9\/]}" -a ! -e "$l" ]; then elif [ $# -gt 1 ]; then
force_date="$l" l="${@:$#}"; l2="${l#@}"
set -- "${@:1:$(($# - 1))}" if [[ "$l" == */* ]] && [ -z "${l//[0-9\/]}" -a ! -e "$l" ]; then
elif [[ "$l" == @* ]] && [ -z "${l2//[0-9\/]}" -a ! -e "$l2" ]; then force_date="$l"
force_date="$l2" set -- "${@:1:$(($# - 1))}"
set -- "${@:1:$(($# - 1))}" elif [[ "$l" == @* ]] && [ -z "${l2//[0-9\/]}" -a ! -e "$l2" ]; then
force_date="$l2"
set -- "${@:1:$(($# - 1))}"
fi
fi fi
fi fi
@ -358,14 +360,24 @@ elif [ "$action" == create ]; then
setx dir=dirname -- "$src" setx dir=dirname -- "$src"
setx srcname=basename -- "$src" setx srcname=basename -- "$src"
if [ -e "$src" ]; then if [ -e "$src" ]; then
estep "Renommage de $(ppath "$src")"
setx destname=replace_ph "$srcname" "$force_date" setx destname=replace_ph "$srcname" "$force_date"
setx dest=abspath "$dir/$destname" setx dest=abspath "$dir/$destname"
[ "$src" != "$dest" ] || ewarn "La source et la destination sont identiques" confirm_do=1
read_value "Veuillez confirmer le nom" destname "$destname" if [ "$src" == "$dest" ]; then
if [ -n "$force_date" ]; then
ewarn "La source et la destination sont identiques"
else
estepi "$(ppath "$src"): aucun renommage nécessaire"
confirm_do=
fi
fi
if [ -n "$confirm_do" ]; then
estep "Renommage de $(ppath "$src")"
read_value "Veuillez confirmer le nom" destname "$destname"
setx dest=abspath "$dir/$destname" setx dest=abspath "$dir/$destname"
[ "$src" != "$dest" ] && mv -i "$src" "$dir/$destname" [ "$src" != "$dest" ] && mv -i "$src" "$dir/$destname"
fi
else else
setx destname=replace_ph "$srcname" "$force_date" setx destname=replace_ph "$srcname" "$force_date"
setx dest=abspath "$dir/$destname" setx dest=abspath "$dir/$destname"