simplifier l'API

This commit is contained in:
Jephté Clain 2017-09-14 22:21:34 +04:00
parent c9886925a3
commit 7d1ec90345
1 changed files with 20 additions and 11 deletions

View File

@ -23,31 +23,29 @@ function conf_auto() {
# conf_auto NAME # conf_auto NAME
# est équivalent à: # est équivalent à:
# conf_init VARS... # conf_init VARS...
# conf_resolve __CONF_FILES ~/etc/default/NAME.conf ~/etc/NAME.d/*.conf # conf_find_files __CONF_FILES ~/etc/default/NAME.conf ~/etc/NAME.d/*.conf
# conf_load "${__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:
# conf_auto PATH/TO/NAME VARS... # conf_auto PATH/TO/NAME VARS...
# est équivalent à: # est équivalent à:
# conf_init VARS... # conf_init VARS...
# conf_resolve __CONF_FILES PATH/TO/NAME.conf PATH/TO/NAME.d/*.conf # conf_find_files __CONF_FILES PATH/TO/NAME.conf PATH/TO/NAME.d/*.conf
# conf_load "${__CONF_FILES[@]}" # conf_load_files "${__CONF_FILES[@]}"
local __name="$1"; shift local __name="$1"; shift
[ -n "$__name" ] || return 1 [ -n "$__name" ] || return 1
[ $# -gt 0 ] && conf_init "$@" [ $# -gt 0 ] && conf_init "$@"
local -a __CONF_FILES local -a __CONF_FILES
if [[ "$__name" == */* ]]; then if [[ "$__name" == */* ]]; then
conf_resolve __CONFS_FILES "$__name.conf" "$__name.d/*.conf" conf_load "$__name.conf" "$__name.d/*.conf"
else 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 fi
conf_load "${__CONFS_FILES[@]}"
} }
function conf_init() { function conf_init() {
# définir les variables attendues lors du chargement des fichiers de # 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 # 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 # 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. # en mode tableau: les nouvelles valeurs sont rajoutées à la fin du tableau.
@ -78,7 +76,18 @@ function conf_init() {
done 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 # initialiser le tableau $1 avec les fichiers de configuration correspondant
# aux arguments $2..@ # aux arguments $2..@
# - si on spécifie un fichier, il est pris tel quel s'il existe # - si on spécifie un fichier, il est pris tel quel s'il existe
@ -104,7 +113,7 @@ function conf_resolve() {
done done
} }
function conf_load() { function conf_load_files() {
# sourcer les fichiers spécifiés en faisant ce qui est nécessaire pour que # 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. # les variables de __CONF_ARRAY_VARS soient correctement traitées.
local -a __conf_backups __conf_values local -a __conf_backups __conf_values