multiconf: rajouter conf_upgrade() dans conf_auto()

This commit is contained in:
Jephté Clain 2017-09-25 23:18:51 +04:00
parent eeef48dfe1
commit 1e576da4ae
1 changed files with 10 additions and 4 deletions

View File

@ -25,6 +25,7 @@ function conf_auto() {
# 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_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:
@ -32,16 +33,20 @@ function conf_auto() {
# est équivalent à:
# conf_init VARS...
# conf_find_files __CONF_FILES PATH/TO/NAME.conf PATH/TO/NAME.d/*.conf
# conf_upgrade PATH/TO/NAME.conf
# conf_load_files "${__CONF_FILES[@]}"
local __name="$1"; shift
[ -n "$__name" ] || return 1
[ $# -gt 0 ] && conf_init "$@"
local -a __CONF_FILES
if [[ "$__name" == */* ]]; then
conf_load "$__name.conf" "$__name.d/*.conf"
conf_find_files __CONFS_FILES "$__name.conf" "$__name.d/*.conf"
[ $# -gt 0 ] && conf_upgrade "$__name.conf"
else
conf_load "$HOME/etc/default/$__name.conf" "$HOME/etc/$__name.d/*.conf"
conf_find_files __CONFS_FILES "$HOME/etc/default/$__name.conf" "$HOME/etc/$__name.d/*.conf"
[ $# -gt 0 ] && conf_upgrade "$HOME/etc/default/$__name.conf"
fi
conf_load_files "${__CONFS_FILES[@]}"
}
function conf_init() {
@ -281,10 +286,11 @@ function conf_upgrade() {
if [ ! -f "$dest" ]; then
local prefix
for desc in "${__CONF_DESCS[@]}"; do
[ "${desc:0:1}" == "#" ] && echo "$desc" >"$dest"
[ "${desc:0:1}" == "#" ] && prefix="$desc"
break
done
>>"$dest"
[ ${#prefix} -gt 0 ] || prefix="# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8"
echo "$prefix" >"$dest"
fi
# vérifier la présence de chaque variable
for desc in "${__CONF_DESCS[@]}"; do