ajouter conf_install pour installer les fichiers de configuration dans un répertoire standardisé
This commit is contained in:
parent
0372a5c44c
commit
a916180ef2
|
@ -111,7 +111,15 @@ function copy_update_ask() {
|
||||||
# Copier ou mettre à jour le fichier $1 vers le fichier $2.
|
# Copier ou mettre à jour le fichier $1 vers le fichier $2.
|
||||||
# Si le fichier existe déjà, la différence est affichée, et une confirmation
|
# Si le fichier existe déjà, la différence est affichée, et une confirmation
|
||||||
# est demandée pour l'écrasement du fichier.
|
# est demandée pour l'écrasement du fichier.
|
||||||
|
# si $1 commence par '-' alors on s'en sert comme option pour configurer le
|
||||||
|
# niveau d'interaction pour demander la confirmation. les paramètres sont
|
||||||
|
# alors décalés
|
||||||
# Retourner vrai si le fichier a été copié sans erreur.
|
# Retourner vrai si le fichier a été copié sans erreur.
|
||||||
|
local interopt=-c
|
||||||
|
if [[ "$1" == -* ]]; then
|
||||||
|
interopt="$1"
|
||||||
|
shift
|
||||||
|
fi
|
||||||
local src="$1" dest="$2"
|
local src="$1" dest="$2"
|
||||||
|
|
||||||
[ -d "$dest" ] && dest="$dest/$(basename -- "$src")"
|
[ -d "$dest" ] && dest="$dest/$(basename -- "$src")"
|
||||||
|
@ -119,10 +127,14 @@ function copy_update_ask() {
|
||||||
|
|
||||||
[ -f "$dest" ] || copy_replace "$src" "$dest"
|
[ -f "$dest" ] || copy_replace "$src" "$dest"
|
||||||
if testdiff "$src" "$dest"; then
|
if testdiff "$src" "$dest"; then
|
||||||
diff -u "$dest" "$src"
|
check_interaction "$interopt" && diff -u "$dest" "$src"
|
||||||
if ask_yesno -c "Voulez-vous remplacer $(ppath "$dest") par la nouvelle version?" C; then
|
if ask_yesno "$interopt" "Voulez-vous remplacer $(ppath "$dest") par la nouvelle version?" C; then
|
||||||
copy_replace "$src" "$dest" "$3"
|
copy_replace "$src" "$dest" "$3"
|
||||||
return $?
|
return $?
|
||||||
|
elif ! check_interaction "$interopt"; then
|
||||||
|
ewarn "Les mises à jours suivantes sont disponibles:"
|
||||||
|
diff -u "$dest" "$src"
|
||||||
|
ewarn "Le fichier $(ppath "$dest") n'a pas été mis à jour"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
return 1
|
return 1
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
## Gestion de fichiers de configuration et de répertoires de configuration
|
## Gestion de fichiers de configuration et de répertoires de configuration
|
||||||
##@cooked nocomments
|
##@cooked nocomments
|
||||||
uprovide multiconf
|
uprovide multiconf
|
||||||
|
urequire install
|
||||||
|
|
||||||
function conf_local() {
|
function conf_local() {
|
||||||
# afficher les commandes pour définir comme locales les variables utilisées
|
# afficher les commandes pour définir comme locales les variables utilisées
|
||||||
|
@ -145,3 +146,37 @@ function conf_load_files() {
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function conf_install() {
|
||||||
|
# USAGE: conf_install DEST SRCS...
|
||||||
|
# installer les fichiers de SRCS dans le répertoire standardisé DEST
|
||||||
|
# ## destination
|
||||||
|
# - si DEST est un nom sans chemin, e.g NAME, alors la destination est
|
||||||
|
# ~/etc/NAME.d
|
||||||
|
# - si DEST est un nom avec chemin, alors la valeur est prise telle quelle
|
||||||
|
# comme destination, et le répertoire est créé le cas échéant.
|
||||||
|
# Si un fichier existe déjà dans la destination, afficher une demande de
|
||||||
|
# confirmation avant de l'écraser
|
||||||
|
# ## source
|
||||||
|
# - si SRC est un fichier, le prendre tel quel
|
||||||
|
# - si SRC est un répertoire, prendre tous les fichiers SRC/*.conf
|
||||||
|
# - si SRC est un pattern, prendre tous les fichiers correspondant
|
||||||
|
local -a srcs
|
||||||
|
local src dir wc
|
||||||
|
local dest="$1"; shift
|
||||||
|
[[ "$dest" == */* ]] || dest="$HOME/etc/$dest.d"
|
||||||
|
mkdir -p "$dest" || return 1
|
||||||
|
for src in "$@"; do
|
||||||
|
if [ -f "$src" ]; then
|
||||||
|
srcs=("$src")
|
||||||
|
elif [ -d "$src" ]; then
|
||||||
|
array_lsfiles srcs "$src" "*.conf"
|
||||||
|
else
|
||||||
|
splitwcs "$src" dir wc
|
||||||
|
array_lsfiles srcs "$dir" "$wc"
|
||||||
|
fi
|
||||||
|
for src in "${srcs[@]}"; do
|
||||||
|
copy_update_ask -y "$src" "$dest"
|
||||||
|
done
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue