templates: support des fichiers locaux

This commit is contained in:
Jephté Clain 2024-04-04 14:59:11 +04:00
parent f572282784
commit b12949d3ea
2 changed files with 17 additions and 7 deletions

View File

@ -2,7 +2,7 @@
## template
* [ ] pour tout fichier source `.file.template`, considérer avant
* [x] pour tout fichier source `.file.template`, considérer avant
`file.template.local` s'il existe, ce qui permet à un utilisateur de
remplacer le modèle livré.
cela a-t-il du sens de supporter aussi file.dist.local? vu que ça ne sert

View File

@ -19,18 +19,23 @@ Copier \$1 vers \$2 de façon inconditionnelle
Si \$2 n'est pas spécifié, on assume que \$1 est de la forme '.file.ext'
et \$2 vaudra alors 'file'
si un fichier \${2#.}.local existe, prendre ce fichier à la place comme source
Ajouter file au tableau userfiles"
function template_copy_replace() {
local src="$1" dest="$2"
local srcdir srcname lsrcname
setx srcdir=dirname "$src"
setx srcname=basename "$src"
if [ -z "$dest" ]; then
local srcdir srcname
setx srcname=basename "$src"
dest="${srcname#.}"
dest="${dest%.*}"
setx srcdir=dirname "$src"
dest="$srcdir/$dest"
fi
lsrcname="${srcname#.}.local"
[ -e "$srcdir/$lsrcname" ] && src="$srcdir/$lsrcname"
userfiles+=("$dest")
cp -P "$src" "$dest"
return 0
@ -42,20 +47,25 @@ Copier \$1 vers \$2 si ce fichier n'existe pas déjà
Si \$2 n'est pas spécifié, on assume que \$1 est de la forme '.file.ext'
et \$2 vaudra alors 'file'
si un fichier \${2#.}.local existe, prendre ce fichier à la place comme source
Ajouter file au tableau userfiles"
function template_copy_missing() {
local src="$1" dest="$2"
local srcdir srcname lsrcname
setx srcdir=dirname "$src"
setx srcname=basename "$src"
if [ -z "$dest" ]; then
local srcdir srcname
setx srcname=basename "$src"
dest="${srcname#.}"
dest="${dest%.*}"
setx srcdir=dirname "$src"
dest="$srcdir/$dest"
fi
userfiles+=("$dest")
if [ ! -e "$dest" ]; then
lsrcname="${srcname#.}.local"
[ -e "$srcdir/$lsrcname" ] && src="$srcdir/$lsrcname"
cp -P "$src" "$dest"
return 0
fi