From eead65706d1be07b53a4b6d0773d5f34f313f2a7 Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Mon, 18 Mar 2024 17:32:16 +0400 Subject: [PATCH] =?UTF-8?q?impl=C3=A9mentation=20minimale=20de=20fndate?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bash/src/fndate.sh | 45 +++++++++++++++++++++++++++++++++++++++++++++ bin/templ.md | 4 +++- bin/templ.sh | 4 +++- bin/templ.yml | 4 +++- 4 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 bash/src/fndate.sh diff --git a/bash/src/fndate.sh b/bash/src/fndate.sh new file mode 100644 index 0000000..7c94e2b --- /dev/null +++ b/bash/src/fndate.sh @@ -0,0 +1,45 @@ +# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 +##@cooked nocomments +module: fndate "gestion de fichiers dont le nom contient la date" + +function: fndate_verifix "\ +corriger le chemin \$1 pour ajouter le cas échéant une date au nom du fichier +le fichier n'existe peut-être pas au moment où cette fonction est appelée +\$2 est l'extension finale du fichier, à ignorer si elle est présente + (elle n'est cependant pas ajoutée si elle n'est pas présente) +\$3 est la date à sélectionner (par défaut c'est la date du jour) + +XXX à implémenter: +- gestion de la date +- ajout d'un suffixe .N le cas échéant (i.e YYMMDD.NN) +" +function fndate_verifix() { + local dir filename ext date + if [[ "$1" == */* ]]; then + dir="$(dirname -- "$1")" + filename="$(basename -- "$1")" + else + dir= + filename="$1" + fi + ext="$2" + if [ -n "$ext" ]; then + ext=".${2#.}" + if [ "${filename%$ext}" != "$filename" ]; then + filename="${filename%$ext}" + else + ext= + fi + fi + date="$3" + [ -n "$date" ] || date="$(date +%y%m%d)" + + case "$filename" in + ~~-*) filename="$date-${filename#~~-}";; + ~~*) filename="$date-${filename#~~}";; + *-~~) filename="${filename%-~~}-$date";; + *~~) filename="${filename%~~}-$date";; + esac + + echo "${dir:+$dir/}$filename$ext" +} diff --git a/bin/templ.md b/bin/templ.md index f7a80ce..a7b4934 100755 --- a/bin/templ.md +++ b/bin/templ.md @@ -1,6 +1,7 @@ #!/bin/bash # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 -source /etc/nulib.sh || exit 1 +source "$(dirname -- "$0")/../load.sh" || exit 1 +require: fndate : ${EDITOR:=vim} @@ -15,6 +16,7 @@ parse_args "$@"; set -- "${args[@]}" [ $# -gt 0 ] || die "vous devez spécifier les noms des fichiers à créer" for file in "$@"; do + setx file=fndate_verifix "$file" .md setx filename=basename -- "$file" if [[ "$filename" == *.* ]]; then : # y'a déjà une extension, ne rien faire diff --git a/bin/templ.sh b/bin/templ.sh index f7fca4d..e17b6c5 100755 --- a/bin/templ.sh +++ b/bin/templ.sh @@ -1,6 +1,7 @@ #!/bin/bash # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 -source /etc/nulib.sh || exit 1 +source "$(dirname -- "$0")/../load.sh" || exit 1 +require: fndate : ${EDITOR:=vim} @@ -18,6 +19,7 @@ parse_args "$@"; set -- "${args[@]}" [ $# -gt 0 ] || die "vous devez spécifier les noms des fichiers à créer" for file in "$@"; do + setx file=fndate_verifix "$file" .sh setx filename=basename -- "$file" if [[ "$filename" == *.* ]]; then : # y'a déjà une extension, ne rien faire diff --git a/bin/templ.yml b/bin/templ.yml index 17d3ab1..7a434a9 100755 --- a/bin/templ.yml +++ b/bin/templ.yml @@ -1,6 +1,7 @@ #!/bin/bash # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 -source /etc/nulib.sh || exit 1 +source "$(dirname -- "$0")/../load.sh" || exit 1 +require: fndate : ${EDITOR:=vim} @@ -15,6 +16,7 @@ parse_args "$@"; set -- "${args[@]}" [ $# -gt 0 ] || die "vous devez spécifier les noms des fichiers à créer" for file in "$@"; do + setx file=fndate_verifix "$file" .yml setx filename=basename -- "$file" if [[ "$filename" == *.* ]]; then : # y'a déjà une extension, ne rien faire