implémentation minimale de fndate

This commit is contained in:
Jephté Clain 2024-03-18 17:32:16 +04:00
parent 0a868dd179
commit eead65706d
4 changed files with 54 additions and 3 deletions

45
bash/src/fndate.sh Normal file
View File

@ -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"
}

View File

@ -1,6 +1,7 @@
#!/bin/bash #!/bin/bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 # -*- 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} : ${EDITOR:=vim}
@ -15,6 +16,7 @@ parse_args "$@"; set -- "${args[@]}"
[ $# -gt 0 ] || die "vous devez spécifier les noms des fichiers à créer" [ $# -gt 0 ] || die "vous devez spécifier les noms des fichiers à créer"
for file in "$@"; do for file in "$@"; do
setx file=fndate_verifix "$file" .md
setx filename=basename -- "$file" setx filename=basename -- "$file"
if [[ "$filename" == *.* ]]; then if [[ "$filename" == *.* ]]; then
: # y'a déjà une extension, ne rien faire : # y'a déjà une extension, ne rien faire

View File

@ -1,6 +1,7 @@
#!/bin/bash #!/bin/bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 # -*- 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} : ${EDITOR:=vim}
@ -18,6 +19,7 @@ parse_args "$@"; set -- "${args[@]}"
[ $# -gt 0 ] || die "vous devez spécifier les noms des fichiers à créer" [ $# -gt 0 ] || die "vous devez spécifier les noms des fichiers à créer"
for file in "$@"; do for file in "$@"; do
setx file=fndate_verifix "$file" .sh
setx filename=basename -- "$file" setx filename=basename -- "$file"
if [[ "$filename" == *.* ]]; then if [[ "$filename" == *.* ]]; then
: # y'a déjà une extension, ne rien faire : # y'a déjà une extension, ne rien faire

View File

@ -1,6 +1,7 @@
#!/bin/bash #!/bin/bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 # -*- 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} : ${EDITOR:=vim}
@ -15,6 +16,7 @@ parse_args "$@"; set -- "${args[@]}"
[ $# -gt 0 ] || die "vous devez spécifier les noms des fichiers à créer" [ $# -gt 0 ] || die "vous devez spécifier les noms des fichiers à créer"
for file in "$@"; do for file in "$@"; do
setx file=fndate_verifix "$file" .yml
setx filename=basename -- "$file" setx filename=basename -- "$file"
if [[ "$filename" == *.* ]]; then if [[ "$filename" == *.* ]]; then
: # y'a déjà une extension, ne rien faire : # y'a déjà une extension, ne rien faire