From 1e576da4aea1d30656465046f516fd88199a923a Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Mon, 25 Sep 2017 23:18:51 +0400 Subject: [PATCH] multiconf: rajouter conf_upgrade() dans conf_auto() --- lib/ulib/multiconf | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/ulib/multiconf b/lib/ulib/multiconf index f2a2bb6..21b381a 100644 --- a/lib/ulib/multiconf +++ b/lib/ulib/multiconf @@ -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