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
|
||||
# est équivalent à:
|
||||
# conf_init VARS...
|
||||
# conf_find_files __CONF_FILES ~/etc/default/NAME.conf ~/etc/NAME.d/*.conf
|
||||
# conf_upgrade ~/etc/default/NAME.conf
|
||||
# conf_find_files __CONF_FILES ~/etc/default/NAME ~/etc/NAME.d/*.conf
|
||||
# conf_upgrade ~/etc/default/NAME
|
||||
# conf_load_files "${__CONF_FILES[@]}"
|
||||
# Pour supporter les scénarii où les fichiers de configuration sont ailleurs
|
||||
# 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"
|
||||
[ $# -gt 0 ] && conf_upgrade "$__name.conf"
|
||||
else
|
||||
conf_find_files __CONFS_FILES "$HOME/etc/default/$__name.conf" "$HOME/etc/$__name.d/*.conf"
|
||||
[ $# -gt 0 ] && conf_upgrade "$HOME/etc/default/$__name.conf"
|
||||
conf_find_files __CONFS_FILES "$HOME/etc/default/$__name" "$HOME/etc/$__name.d/*.conf"
|
||||
[ $# -gt 0 ] && conf_upgrade "$HOME/etc/default/$__name"
|
||||
fi
|
||||
conf_load_files "${__CONFS_FILES[@]}"
|
||||
}
|
||||
|
@ -240,8 +240,9 @@ function conf_load_files() {
|
|||
}
|
||||
|
||||
function conf_install() {
|
||||
# USAGE: conf_install DEST SRCS...
|
||||
# installer les fichiers de SRCS dans le répertoire standardisé DEST
|
||||
# USAGE: conf_install DEST PREFIX SRCS...
|
||||
# installer les fichiers de SRCS dans le répertoire standardisé DEST avec le
|
||||
# préfixe PREFIX
|
||||
# ## destination
|
||||
# - si DEST est un nom sans chemin, e.g NAME, alors la destination est
|
||||
# ~/etc/NAME.d
|
||||
|
@ -253,24 +254,43 @@ function conf_install() {
|
|||
# - 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
|
||||
# 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 dest="$1"; shift
|
||||
local prefix="$1"; shift
|
||||
[[ "$dest" == */* ]] || dest="$HOME/etc/$dest.d"
|
||||
mkdir -p "$dest" || return 1
|
||||
for src in "$@"; do
|
||||
if [ -f "$src" ]; then
|
||||
srcs=("$src")
|
||||
array_add srcs "$src"
|
||||
elif [ -d "$src" ]; then
|
||||
array_lsfiles srcs "$src" "*.conf"
|
||||
array_lsfiles tmpsrcs "$src" "*.conf"
|
||||
array_extend srcs tmpsrcs
|
||||
else
|
||||
splitwcs "$src" dir wc
|
||||
array_lsfiles srcs "$dir" "$wc"
|
||||
array_lsfiles tmpsrcs "$dir" "$wc"
|
||||
array_extend srcs tmpsrcs
|
||||
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
|
||||
copy_update_ask -y "$src" "$dest"
|
||||
done
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
function conf_upgrade() {
|
||||
|
|
Loading…
Reference in New Issue