ne pas écraser le fichier .runsconfig s'il existe
This commit is contained in:
Jephte CLAIN 2014-11-29 23:14:46 +04:00
parent 0b460cf8c2
commit 16f5486157
1 changed files with 41 additions and 20 deletions

View File

@ -28,18 +28,27 @@ OPTIONS
Afficher les différences entre les templates et les fichiers du Afficher les différences entre les templates et les fichiers du
répertoire d'hôte. répertoire d'hôte.
--list-vars --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 --write-vars
Forcer l'écriture des valeurs actuelles des variables dans le fichier Ecrire dans le fichier .runsconfig les valeurs par défaut des variables,
.runsconfig, ce qui permet d'éviter de les spécifier à chaque fois avec ce qui permet d'éviter de les spécifier à chaque fois avec l'option -v
l'option -v Le fichier n'est pas écrasé s'il existe déjà.
-v, --var NAME=VALUE -v, --var NAME=VALUE
Spécifier la valeur d'une variable. Il est possible de spécifier des 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; } function __templatectl_display_help() { display_help; }
## Valeurs par défaut des variables de template
set_defaults runs set_defaults runs
# essayer de déterminer l'hôte à partir du répertoire courant # essayer de déterminer l'hôte à partir du répertoire courant
host= host=
array_split __hostsdirs "$RUNSHOSTSPATH" : array_split __hostsdirs "$RUNSHOSTSPATH" :
@ -52,6 +61,7 @@ for __hostsdir in "${__hostsdirs[@]}"; do
break break
fi fi
done done
# sinon lire l'environnement # sinon lire l'environnement
if [ -z "$host" ]; then if [ -z "$host" ]; then
runs_initdomains runs_initdomains
@ -63,11 +73,15 @@ if [ -z "$host" ]; then
fi fi
[ -n "$domain" ] || host="$(runs_add_domain "$host")" [ -n "$domain" ] || host="$(runs_add_domain "$host")"
fi fi
hostname="${host%%.*}" hostname="${host%%.*}"
TEMPLATE_VARS=( DEFAULT_TEMPLATE_VARS=(
host hostname 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 # mettre à jour la valeur d'une variable en tenant compte de certaines
# dépendances. par exemple, si on modifie host, il faut mettre à jour # dépendances. par exemple, si on modifie host, il faut mettre à jour
# hostname. # hostname.
@ -93,32 +107,38 @@ __TEMPLATECTL_SUPPLOPTS=(
__templatectl_parseopts "$@" && \ __templatectl_parseopts "$@" && \
set -- "${args[@]}" || die "$args" set -- "${args[@]}" || die "$args"
# répertoire source # répertoire de template
setx __templatectl_srcdir=templatesrc runsconfig setx __templatectl_srcdir=templatesrc runsconfig
# répertoire d'hôte # répertoire d'hôte
[ -n "$__templatectl_destdir" ] || __templatectl_destdir=. [ -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" __runsconfig_vars="$__templatectl_destdir/.runsconfig"
if [ -f "$__runsconfig_vars" ]; then [ -f "$__runsconfig_vars" ] && source "$__runsconfig_vars"
source "$__runsconfig_vars" for __var in "${__template_vars[@]}"; do
for __var in "${__runsconfig[@]}"; do
splitvar "$__var" __name __value splitvar "$__var" __name __value
update_template_var "$__name" "$__value" update_var "$__name" "$__value"
done done
fi array_contains TEMPLATE_VARS configdir || update_var configdir "$__templatectl_destdir"
# mettre à jour les variables # mettre à jour les variables
__modified= __modified=
for __var in "${__vars[@]}"; do for __var in "${__vars[@]}"; do
splitvar "$__var" __name __value splitvar "$__var" __name __value
update_template_var "$__name" "$__value" && __modified=1 update_var "$__name" "$__value" && __modified=1
done done
# enregistrer les valeurs des variables # 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" >"$__runsconfig_vars"
echo "__runsconfig=(" >>"$__runsconfig_vars" echo "__template_vars=(" >>"$__runsconfig_vars"
for __var in "${TEMPLATE_VARS[@]}"; do for __var in "${TEMPLATE_VARS[@]}"; do
echo_setv "$__var=${!__var}" >>"$__runsconfig_vars" echo_setv "$__var=${!__var}" >>"$__runsconfig_vars"
done done
@ -127,6 +147,7 @@ fi
# afficher les variables # afficher les variables
if [ -n "$__list_vars" ]; then if [ -n "$__list_vars" ]; then
echo "# template vars"
for __var in "${TEMPLATE_VARS[@]}"; do for __var in "${TEMPLATE_VARS[@]}"; do
echo_setv "$__var=${!__var}" echo_setv "$__var=${!__var}"
done done