utempl: support du datage automatique des fichiers

This commit is contained in:
Jephté Clain 2018-07-21 10:34:02 +04:00
parent dbf965db90
commit 19267dd993
2 changed files with 19 additions and 2 deletions

4
fndate
View File

@ -234,6 +234,7 @@ dcopy) action=copy;;
dmove) action=move;; dmove) action=move;;
dcmd) action=cmd;; dcmd) action=cmd;;
esac esac
cmd_quiet=
placeholder= placeholder=
auto_force_date=1 auto_force_date=1
force_date= force_date=
@ -248,6 +249,7 @@ parse_opts "${PRETTYOPTS[@]}" \
-m,--move action=move \ -m,--move action=move \
-c,--cmd action=cmd \ -c,--cmd action=cmd \
--string action=string \ --string action=string \
--cmd-quiet cmd_quiet=1 \
-P:,--placeholder: placeholder= \ -P:,--placeholder: placeholder= \
--no-auto-force-date auto_force_date= \ --no-auto-force-date auto_force_date= \
-@:,--force-date: force_date= \ -@:,--force-date: force_date= \
@ -293,7 +295,7 @@ if [ "$action" == cmd ]; then
found= found=
for arg in "$@"; do for arg in "$@"; do
if have_ph "$arg"; then if have_ph "$arg"; then
check_interaction -c && evalx qvals "${args[@]}" "$arg" // estepi "Commande:" [ -z "$cmd_quiet" ] && check_interaction -c && evalx qvals "${args[@]}" "$arg" // estepi "Commande:"
setx arg=replace_ph "$arg" "$force_date" setx arg=replace_ph "$arg" "$force_date"
read_value "Veuillez confirmer le nom" arg "$arg" read_value "Veuillez confirmer le nom" arg "$arg"
found=1 found=1

17
utempl
View File

@ -18,6 +18,10 @@ Avant le nom du nouveau fichier, les options suivantes peuvent être utilisées:
Editer le fichier après l'avoir créé Editer le fichier après l'avoir créé
-g, --no-edit -g, --no-edit
Ne pas éditer le fichier après l'avoir créé Ne pas éditer le fichier après l'avoir créé
--no-fndate
Désactiver le support du marqueur ~~ pour dater le fichier.
Par défaut, utiliser 'fndate -c $scriptname' si le nom du fichier
contient le marqueur ~~
Après le nom du fichier, toutes les options sont spécifiques au modèle Après le nom du fichier, toutes les options sont spécifiques au modèle
utilisé pour créer le nouveau fichier. Utiliser l'option --help pour utilisé pour créer le nouveau fichier. Utiliser l'option --help pour
@ -26,6 +30,7 @@ avoir une description des options disponibles."
template= template=
edit=auto edit=auto
fndate=1
overwrite= overwrite=
encoding=auto encoding=auto
executable=auto executable=auto
@ -34,6 +39,7 @@ parse_opts + "${PRETTYOPTS[@]}" \
--help '$exit_with display_help' \ --help '$exit_with display_help' \
-t:,--template: template= \ -t:,--template: template= \
-e,--edit edit=1 \ -e,--edit edit=1 \
--no-fndate fndate= \
-g,--no-edit edit= \ -g,--no-edit edit= \
-f,--overwrite overwrite=1 \ -f,--overwrite overwrite=1 \
-E:,--encoding: encoding= \ -E:,--encoding: encoding= \
@ -85,6 +91,12 @@ if [ ! -f "$templ" ]; then
fi fi
[ -n "$found" -a -x "$templ" ] || die "$file: Impossible de trouver le template $template${templ:+ ($(basename "$templ"))}" [ -n "$found" -a -x "$templ" ] || die "$file: Impossible de trouver le template $template${templ:+ ($(basename "$templ"))}"
if [ -n "$fndate" ]; then
# n'utiliser fndate que si le marqueur est présent
setx filename=basename -- "$file"
[[ "$filename" == *~~* ]] || fndate=
fi
args=() args=()
[ "$template" != "auto" ] && args=("${args[@]}" --template "$template") [ "$template" != "auto" ] && args=("${args[@]}" --template "$template")
if [ "$edit" != "auto" ]; then if [ "$edit" != "auto" ]; then
@ -103,4 +115,7 @@ if [ "$executable" != "auto" ]; then
args=("${args[@]}" --no-executable) args=("${args[@]}" --no-executable)
fi fi
fi fi
exec "$templ" "$file" "${args[@]}" "${opts[@]}" "$@"
cmd=("$templ" "$file" "${args[@]}" "${opts[@]}" "$@")
[ -n "$fndate" ] && cmd=("$scriptdir/fndate" -c --cmd-quiet -- "${cmd[@]}")
exec "${cmd[@]}"