From 7d1ec9034551835c6ab3495c15e49df38174ad94 Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Thu, 14 Sep 2017 22:21:34 +0400 Subject: [PATCH] simplifier l'API --- lib/ulib/multiconf | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/lib/ulib/multiconf b/lib/ulib/multiconf index 91f4e64..a6ff13c 100644 --- a/lib/ulib/multiconf +++ b/lib/ulib/multiconf @@ -23,31 +23,29 @@ function conf_auto() { # conf_auto NAME # est équivalent à: # conf_init VARS... - # conf_resolve __CONF_FILES ~/etc/default/NAME.conf ~/etc/NAME.d/*.conf - # conf_load "${__CONF_FILES[@]}" + # conf_find_files __CONF_FILES ~/etc/default/NAME.conf ~/etc/NAME.d/*.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: # conf_auto PATH/TO/NAME VARS... # est équivalent à: # conf_init VARS... - # conf_resolve __CONF_FILES PATH/TO/NAME.conf PATH/TO/NAME.d/*.conf - # conf_load "${__CONF_FILES[@]}" - + # conf_find_files __CONF_FILES PATH/TO/NAME.conf PATH/TO/NAME.d/*.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_resolve __CONFS_FILES "$__name.conf" "$__name.d/*.conf" + conf_load "$__name.conf" "$__name.d/*.conf" else - conf_resolve __CONFS_FILES "$HOME/etc/default/$__name.conf" "$HOME/etc/$__name.d/*.conf" + conf_load "$HOME/etc/default/$__name.conf" "$HOME/etc/$__name.d/*.conf" fi - conf_load "${__CONFS_FILES[@]}" } function conf_init() { # définir les variables attendues lors du chargement des fichiers de - # configuration par conf_load + # configuration par conf_load_files # par défaut, les variables sont en mode scalaire: la définition d'une # variable écrase la valeur précédente. Avec l'option -a les variables sont # en mode tableau: les nouvelles valeurs sont rajoutées à la fin du tableau. @@ -78,7 +76,18 @@ function conf_init() { done } -function conf_resolve() { +function conf_load() { + # charger les fichiers de configuration spécifiés + # conf_load SPECS... + # est équivalent à: + # conf_find_files __CONF_FILES SPECS... + # conf_load_files "${__CONF_FILES[@]}" + local -a __CONF_FILES + conf_find_files __CONFS_FILES "$@" + conf_load_files "${__CONFS_FILES[@]}" +} + +function conf_find_files() { # initialiser le tableau $1 avec les fichiers de configuration correspondant # aux arguments $2..@ # - si on spécifie un fichier, il est pris tel quel s'il existe @@ -104,7 +113,7 @@ function conf_resolve() { done } -function conf_load() { +function conf_load_files() { # sourcer les fichiers spécifiés en faisant ce qui est nécessaire pour que # les variables de __CONF_ARRAY_VARS soient correctement traitées. local -a __conf_backups __conf_values