From 16f548615770b363fa380d81e018aa3c079833d3 Mon Sep 17 00:00:00 2001 From: Jephte CLAIN Date: Sat, 29 Nov 2014 23:14:46 +0400 Subject: [PATCH] =?UTF-8?q?maj=20doc=20ne=20pas=20=C3=A9craser=20le=20fich?= =?UTF-8?q?ier=20.runsconfig=20s'il=20existe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- runsconfig | 61 ++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 41 insertions(+), 20 deletions(-) diff --git a/runsconfig b/runsconfig index 97958ab..c5e6eea 100755 --- a/runsconfig +++ b/runsconfig @@ -28,18 +28,27 @@ OPTIONS Afficher les différences entre les templates et les fichiers du répertoire d'hôte. --list-vars - Afficher la valeur par défaut des variables prédéfinies + Afficher pour information les valeurs par défaut des variables de + template. --write-vars - Forcer l'écriture des valeurs actuelles des variables dans le fichier - .runsconfig, ce qui permet d'éviter de les spécifier à chaque fois avec - l'option -v + Ecrire dans le fichier .runsconfig les valeurs par défaut des variables, + ce qui permet d'éviter de les spécifier à chaque fois avec l'option -v + Le fichier n'est pas écrasé s'il existe déjà. -v, --var NAME=VALUE Spécifier la valeur d'une variable. Il est possible de spécifier des - valeurs qui ne sont pas dans la liste prédéfinie." + valeurs qui ne sont pas dans la liste prédéfinie. Par défaut, il s'agit + d'une variable de template, utilisée pour mettre à jour la copie locale + d'un template avec l'option --merge + Dans le fichier .runsconfig, les valeurs des variables de template n'est + pas censée changer. Lors de la copie des templates avec --merge, chaque + occurence de @@VAR@@ dans un template est remplacée dans la copie locale + par la valeur de la variable de template VAR" } function __templatectl_display_help() { display_help; } +## Valeurs par défaut des variables de template set_defaults runs + # essayer de déterminer l'hôte à partir du répertoire courant host= array_split __hostsdirs "$RUNSHOSTSPATH" : @@ -52,6 +61,7 @@ for __hostsdir in "${__hostsdirs[@]}"; do break fi done + # sinon lire l'environnement if [ -z "$host" ]; then runs_initdomains @@ -63,11 +73,15 @@ if [ -z "$host" ]; then fi [ -n "$domain" ] || host="$(runs_add_domain "$host")" fi + hostname="${host%%.*}" -TEMPLATE_VARS=( - host hostname +DEFAULT_TEMPLATE_VARS=( + host="$host" + hostname="$hostname" ) -function update_template_var() { + +TEMPLATE_VARS=() +function update_var() { # mettre à jour la valeur d'une variable en tenant compte de certaines # dépendances. par exemple, si on modifie host, il faut mettre à jour # hostname. @@ -93,32 +107,38 @@ __TEMPLATECTL_SUPPLOPTS=( __templatectl_parseopts "$@" && \ set -- "${args[@]}" || die "$args" -# répertoire source +# répertoire de template setx __templatectl_srcdir=templatesrc runsconfig + # répertoire d'hôte [ -n "$__templatectl_destdir" ] || __templatectl_destdir=. +setx __templatectl_destdir=abspath "$__templatectl_destdir" -# charger les variables +# charger les variables. important: la liste des variables définie dans le +# fichier .runsconfig prend la précédence sur la liste définie par défaut +__template_vars=("${DEFAULT_TEMPLATE_VARS[@]}") __runsconfig_vars="$__templatectl_destdir/.runsconfig" -if [ -f "$__runsconfig_vars" ]; then - source "$__runsconfig_vars" - for __var in "${__runsconfig[@]}"; do - splitvar "$__var" __name __value - update_template_var "$__name" "$__value" - done -fi +[ -f "$__runsconfig_vars" ] && source "$__runsconfig_vars" +for __var in "${__template_vars[@]}"; do + splitvar "$__var" __name __value + update_var "$__name" "$__value" +done +array_contains TEMPLATE_VARS configdir || update_var configdir "$__templatectl_destdir" # mettre à jour les variables __modified= for __var in "${__vars[@]}"; do splitvar "$__var" __name __value - update_template_var "$__name" "$__value" && __modified=1 + update_var "$__name" "$__value" && __modified=1 done # enregistrer les valeurs des variables -if [ -n "$__modified" -o "$__write_vars" ]; then +if [ -n "$__write_vars" ]; then + [ -f "$__runsconfig_vars" ] && + die "Refus d'écraser le fichier existant $(ppath "$__runsconfig_vars")" + >"$__runsconfig_vars" - echo "__runsconfig=(" >>"$__runsconfig_vars" + echo "__template_vars=(" >>"$__runsconfig_vars" for __var in "${TEMPLATE_VARS[@]}"; do echo_setv "$__var=${!__var}" >>"$__runsconfig_vars" done @@ -127,6 +147,7 @@ fi # afficher les variables if [ -n "$__list_vars" ]; then + echo "# template vars" for __var in "${TEMPLATE_VARS[@]}"; do echo_setv "$__var=${!__var}" done