ulib/multiconf: améliorer conf_install()
This commit is contained in:
parent
6c3ae24a67
commit
9fb19b4cef
|
@ -24,8 +24,8 @@ function conf_auto() {
|
||||||
# conf_auto NAME
|
# conf_auto NAME
|
||||||
# est équivalent à:
|
# est équivalent à:
|
||||||
# conf_init VARS...
|
# conf_init VARS...
|
||||||
# conf_find_files __CONF_FILES ~/etc/default/NAME.conf ~/etc/NAME.d/*.conf
|
# conf_find_files __CONF_FILES ~/etc/default/NAME ~/etc/NAME.d/*.conf
|
||||||
# conf_upgrade ~/etc/default/NAME.conf
|
# conf_upgrade ~/etc/default/NAME
|
||||||
# conf_load_files "${__CONF_FILES[@]}"
|
# conf_load_files "${__CONF_FILES[@]}"
|
||||||
# Pour supporter les scénarii où les fichiers de configuration sont ailleurs
|
# Pour supporter les scénarii où les fichiers de configuration sont ailleurs
|
||||||
# que dans ~/etc/default, l'argument NAME peut être un chemin:
|
# que dans ~/etc/default, l'argument NAME peut être un chemin:
|
||||||
|
@ -43,8 +43,8 @@ function conf_auto() {
|
||||||
conf_find_files __CONFS_FILES "$__name.conf" "$__name.d/*.conf"
|
conf_find_files __CONFS_FILES "$__name.conf" "$__name.d/*.conf"
|
||||||
[ $# -gt 0 ] && conf_upgrade "$__name.conf"
|
[ $# -gt 0 ] && conf_upgrade "$__name.conf"
|
||||||
else
|
else
|
||||||
conf_find_files __CONFS_FILES "$HOME/etc/default/$__name.conf" "$HOME/etc/$__name.d/*.conf"
|
conf_find_files __CONFS_FILES "$HOME/etc/default/$__name" "$HOME/etc/$__name.d/*.conf"
|
||||||
[ $# -gt 0 ] && conf_upgrade "$HOME/etc/default/$__name.conf"
|
[ $# -gt 0 ] && conf_upgrade "$HOME/etc/default/$__name"
|
||||||
fi
|
fi
|
||||||
conf_load_files "${__CONFS_FILES[@]}"
|
conf_load_files "${__CONFS_FILES[@]}"
|
||||||
}
|
}
|
||||||
|
@ -240,8 +240,9 @@ function conf_load_files() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function conf_install() {
|
function conf_install() {
|
||||||
# USAGE: conf_install DEST SRCS...
|
# USAGE: conf_install DEST PREFIX SRCS...
|
||||||
# installer les fichiers de SRCS dans le répertoire standardisé DEST
|
# installer les fichiers de SRCS dans le répertoire standardisé DEST avec le
|
||||||
|
# préfixe PREFIX
|
||||||
# ## destination
|
# ## destination
|
||||||
# - si DEST est un nom sans chemin, e.g NAME, alors la destination est
|
# - si DEST est un nom sans chemin, e.g NAME, alors la destination est
|
||||||
# ~/etc/NAME.d
|
# ~/etc/NAME.d
|
||||||
|
@ -253,24 +254,43 @@ function conf_install() {
|
||||||
# - si SRC est un fichier, le prendre tel quel
|
# - 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 répertoire, prendre tous les fichiers SRC/*.conf
|
||||||
# - si SRC est un pattern, prendre tous les fichiers correspondant
|
# - si SRC est un pattern, prendre tous les fichiers correspondant
|
||||||
local -a srcs
|
# s'il n'y a qu'une seule source, la destination sera DEST/PREFIX.conf
|
||||||
|
# sinon, la destination sera DEST/PREFIX-SRCNAME où SRCNAME est le nom du
|
||||||
|
# fichier source
|
||||||
|
# si PREFIX est vide, alors les fichiers sont copiés avec leur nom sans
|
||||||
|
# modification.
|
||||||
|
local -a tmpsrcs srcs
|
||||||
local src dir wc
|
local src dir wc
|
||||||
local dest="$1"; shift
|
local dest="$1"; shift
|
||||||
|
local prefix="$1"; shift
|
||||||
[[ "$dest" == */* ]] || dest="$HOME/etc/$dest.d"
|
[[ "$dest" == */* ]] || dest="$HOME/etc/$dest.d"
|
||||||
mkdir -p "$dest" || return 1
|
mkdir -p "$dest" || return 1
|
||||||
for src in "$@"; do
|
for src in "$@"; do
|
||||||
if [ -f "$src" ]; then
|
if [ -f "$src" ]; then
|
||||||
srcs=("$src")
|
array_add srcs "$src"
|
||||||
elif [ -d "$src" ]; then
|
elif [ -d "$src" ]; then
|
||||||
array_lsfiles srcs "$src" "*.conf"
|
array_lsfiles tmpsrcs "$src" "*.conf"
|
||||||
|
array_extend srcs tmpsrcs
|
||||||
else
|
else
|
||||||
splitwcs "$src" dir wc
|
splitwcs "$src" dir wc
|
||||||
array_lsfiles srcs "$dir" "$wc"
|
array_lsfiles tmpsrcs "$dir" "$wc"
|
||||||
|
array_extend srcs tmpsrcs
|
||||||
fi
|
fi
|
||||||
|
done
|
||||||
|
[ ${#srcs[*]} -gt 0 ] || return 0
|
||||||
|
if [ -n "$prefix" ]; then
|
||||||
|
if [ ${#srcs[*]} -eq 1 ]; then
|
||||||
|
copy_update_ask -y "$src" "$dest/$prefix.conf"
|
||||||
|
else
|
||||||
|
for src in "${srcs[@]}"; do
|
||||||
|
copy_update_ask -y "$src" "$dest/$prefix-$(basename -- "$srcname")"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
else
|
||||||
for src in "${srcs[@]}"; do
|
for src in "${srcs[@]}"; do
|
||||||
copy_update_ask -y "$src" "$dest"
|
copy_update_ask -y "$src" "$dest"
|
||||||
done
|
done
|
||||||
done
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function conf_upgrade() {
|
function conf_upgrade() {
|
||||||
|
|
Loading…
Reference in New Issue