support des variables pour runsconfig
This commit is contained in:
parent
6db9c72ab1
commit
92f9b80cdd
|
@ -1,4 +1,5 @@
|
||||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
# Ce fichier contient les paramètres qui sont partagés par tous les scripts de @@host@@
|
# Ce fichier contient les paramètres qui sont partagés par tous les scripts
|
||||||
|
# de @@host@@
|
||||||
#var name=value arr+=value arr-=value
|
#var name=value arr+=value arr-=value
|
||||||
#var arr value0 value1...
|
#var arr value0 value1...
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
# Ce fichier contient les informations sur le type de système installé sur @@host@@
|
# Ce fichier contient les informations sur le type de système installé
|
||||||
|
# sur @@host@@
|
||||||
# Il est possible de recopier la valeur affichée par la commande usysinfos
|
# Il est possible de recopier la valeur affichée par la commande usysinfos
|
||||||
#sysname=()
|
#sysname=()
|
||||||
#sysdist=()
|
#sysdist=()
|
||||||
|
|
103
runsconfig
103
runsconfig
|
@ -1,7 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
|
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
|
||||||
urequire DEFAULTS template
|
urequire DEFAULTS runs template
|
||||||
|
|
||||||
function display_help() {
|
function display_help() {
|
||||||
uecho "$scriptname: Gérer un répertoire d'hôte de runs
|
uecho "$scriptname: Gérer un répertoire d'hôte de runs
|
||||||
|
@ -25,10 +25,70 @@ OPTIONS
|
||||||
être utile après -z
|
être utile après -z
|
||||||
-g, --diff
|
-g, --diff
|
||||||
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
|
||||||
|
Afficher la valeur par défaut des variables prédéfinies
|
||||||
|
--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
|
||||||
|
-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."
|
||||||
}
|
}
|
||||||
function __templatectl_display_help() { display_help; }
|
function __templatectl_display_help() { display_help; }
|
||||||
|
|
||||||
|
set_defaults runs
|
||||||
|
# essayer de déterminer l'hôte à partir du répertoire courant
|
||||||
|
host=
|
||||||
|
array_split __hostsdirs "$RUNSHOSTSPATH" :
|
||||||
|
setx __cwd=pwd
|
||||||
|
for __hostsdir in "${__hostsdirs[@]}"; do
|
||||||
|
setx __hostsdir=abspath "$__hostsdir"
|
||||||
|
if [ "${__cwd#$__hostsdir/}" != "$__cwd" ]; then
|
||||||
|
host="${__cwd#$__hostsdir/}"
|
||||||
|
host="${host%%/*}"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
# sinon lire l'environnement
|
||||||
|
if [ -z "$host" ]; then
|
||||||
|
runs_initdomains
|
||||||
|
setx host=myhost
|
||||||
|
splithost "$host" hostname domain
|
||||||
|
if [ -z "$domain" ]; then
|
||||||
|
host="$(runs_find_host "$host")"
|
||||||
|
splithost "$host" hostname domain
|
||||||
|
fi
|
||||||
|
[ -n "$domain" ] || host="$(runs_add_domain "$host")"
|
||||||
|
fi
|
||||||
|
hostname="${host%%.*}"
|
||||||
|
TEMPLATE_VARS=(
|
||||||
|
host hostname
|
||||||
|
)
|
||||||
|
function update_template_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.
|
||||||
|
local __orig_value="${!1}"
|
||||||
|
array_addu TEMPLATE_VARS "$1"
|
||||||
|
setv "$1" "$2"
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
host) hostname="${host%%.*}";;
|
||||||
|
esac
|
||||||
|
|
||||||
|
[ "$2" != "$__orig_value" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
__vars=()
|
||||||
|
__list_vars=
|
||||||
|
__write_vars=
|
||||||
|
__TEMPLATECTL_SUPPLOPTS=(
|
||||||
|
-v:,--var: __vars
|
||||||
|
--list-vars __list_vars=1
|
||||||
|
--write-vars __write_vars=1
|
||||||
|
)
|
||||||
__templatectl_parseopts "$@" && \
|
__templatectl_parseopts "$@" && \
|
||||||
set -- "${args[@]}" || die "$args"
|
set -- "${args[@]}" || die "$args"
|
||||||
|
|
||||||
|
@ -37,6 +97,43 @@ 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=.
|
||||||
|
|
||||||
[ -n "$templatectl_opt" ] || templatectl_auto=1
|
# charger les variables
|
||||||
|
__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
|
||||||
|
|
||||||
|
# mettre à jour les variables
|
||||||
|
__modified=
|
||||||
|
for __var in "${__vars[@]}"; do
|
||||||
|
splitvar "$__var" __name __value
|
||||||
|
update_template_var "$__name" "$__value" && __modified=1
|
||||||
|
done
|
||||||
|
|
||||||
|
# enregistrer les valeurs des variables
|
||||||
|
if [ -n "$__modified" -o "$__write_vars" ]; then
|
||||||
|
>"$__runsconfig_vars"
|
||||||
|
echo "__runsconfig=(" >>"$__runsconfig_vars"
|
||||||
|
for __var in "${TEMPLATE_VARS[@]}"; do
|
||||||
|
echo_setv "$__var=${!__var}" >>"$__runsconfig_vars"
|
||||||
|
done
|
||||||
|
echo ")" >>"$__runsconfig_vars"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# afficher les variables
|
||||||
|
if [ -n "$__list_vars" ]; then
|
||||||
|
for __var in "${TEMPLATE_VARS[@]}"; do
|
||||||
|
echo_setv "$__var=${!__var}"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# gérer les fichiers template et locaux
|
||||||
|
if [ -z "$__templatectl_opt" -a -z "$__list_vars" -a -z "$__write_vars" ]; then
|
||||||
|
__templatectl_auto=1
|
||||||
|
fi
|
||||||
[ -d "$__templatectl_destdir" ] || die "$__templatectl_destdir: répertoire introuvable"
|
[ -d "$__templatectl_destdir" ] || die "$__templatectl_destdir: répertoire introuvable"
|
||||||
__templatectl_do "$@"
|
__templatectl_do "$@"
|
||||||
|
|
Loading…
Reference in New Issue