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 ## 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 `file.template.local` s'il existe, ce qui permet à un utilisateur de
remplacer le modèle livré. remplacer le modèle livré.
cela a-t-il du sens de supporter aussi file.dist.local? vu que ça ne sert 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' Si \$2 n'est pas spécifié, on assume que \$1 est de la forme '.file.ext'
et \$2 vaudra alors 'file' et \$2 vaudra alors 'file'
si un fichier \${2#.}.local existe, prendre ce fichier à la place comme source
Ajouter file au tableau userfiles" Ajouter file au tableau userfiles"
function template_copy_replace() { function template_copy_replace() {
local src="$1" dest="$2" local src="$1" dest="$2"
if [ -z "$dest" ]; then local srcdir srcname lsrcname
local srcdir srcname setx srcdir=dirname "$src"
setx srcname=basename "$src" setx srcname=basename "$src"
if [ -z "$dest" ]; then
dest="${srcname#.}" dest="${srcname#.}"
dest="${dest%.*}" dest="${dest%.*}"
setx srcdir=dirname "$src"
dest="$srcdir/$dest" dest="$srcdir/$dest"
fi fi
lsrcname="${srcname#.}.local"
[ -e "$srcdir/$lsrcname" ] && src="$srcdir/$lsrcname"
userfiles+=("$dest") userfiles+=("$dest")
cp -P "$src" "$dest" cp -P "$src" "$dest"
return 0 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' Si \$2 n'est pas spécifié, on assume que \$1 est de la forme '.file.ext'
et \$2 vaudra alors 'file' et \$2 vaudra alors 'file'
si un fichier \${2#.}.local existe, prendre ce fichier à la place comme source
Ajouter file au tableau userfiles" Ajouter file au tableau userfiles"
function template_copy_missing() { function template_copy_missing() {
local src="$1" dest="$2" local src="$1" dest="$2"
if [ -z "$dest" ]; then local srcdir srcname lsrcname
local srcdir srcname setx srcdir=dirname "$src"
setx srcname=basename "$src" setx srcname=basename "$src"
if [ -z "$dest" ]; then
dest="${srcname#.}" dest="${srcname#.}"
dest="${dest%.*}" dest="${dest%.*}"
setx srcdir=dirname "$src"
dest="$srcdir/$dest" dest="$srcdir/$dest"
fi fi
userfiles+=("$dest") userfiles+=("$dest")
if [ ! -e "$dest" ]; then if [ ! -e "$dest" ]; then
lsrcname="${srcname#.}.local"
[ -e "$srcdir/$lsrcname" ] && src="$srcdir/$lsrcname"
cp -P "$src" "$dest" cp -P "$src" "$dest"
return 0 return 0
fi fi