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;;
dcmd) action=cmd;;
esac
cmd_quiet=
placeholder=
auto_force_date=1
force_date=
@ -248,6 +249,7 @@ parse_opts "${PRETTYOPTS[@]}" \
-m,--move action=move \
-c,--cmd action=cmd \
--string action=string \
--cmd-quiet cmd_quiet=1 \
-P:,--placeholder: placeholder= \
--no-auto-force-date auto_force_date= \
-@:,--force-date: force_date= \
@ -293,7 +295,7 @@ if [ "$action" == cmd ]; then
found=
for arg in "$@"; do
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"
read_value "Veuillez confirmer le nom" arg "$arg"
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éé
-g, --no-edit
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
utilisé pour créer le nouveau fichier. Utiliser l'option --help pour
@ -26,6 +30,7 @@ avoir une description des options disponibles."
template=
edit=auto
fndate=1
overwrite=
encoding=auto
executable=auto
@ -34,6 +39,7 @@ parse_opts + "${PRETTYOPTS[@]}" \
--help '$exit_with display_help' \
-t:,--template: template= \
-e,--edit edit=1 \
--no-fndate fndate= \
-g,--no-edit edit= \
-f,--overwrite overwrite=1 \
-E:,--encoding: encoding= \
@ -85,6 +91,12 @@ if [ ! -f "$templ" ]; then
fi
[ -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=()
[ "$template" != "auto" ] && args=("${args[@]}" --template "$template")
if [ "$edit" != "auto" ]; then
@ -103,4 +115,7 @@ if [ "$executable" != "auto" ]; then
args=("${args[@]}" --no-executable)
fi
fi
exec "$templ" "$file" "${args[@]}" "${opts[@]}" "$@"
cmd=("$templ" "$file" "${args[@]}" "${opts[@]}" "$@")
[ -n "$fndate" ] && cmd=("$scriptdir/fndate" -c --cmd-quiet -- "${cmd[@]}")
exec "${cmd[@]}"