module template: support de variables supplémentaires avec TEMPLATE_USER_VARS et de la description des variables dans le fichier de configuration
This commit is contained in:
parent
b920641fca
commit
ed1633a30b
|
@ -419,15 +419,42 @@ function template_srcdir() {
|
|||
fi
|
||||
}
|
||||
|
||||
function template_build_vars() {
|
||||
# Initialiser les tableaux $1 et $2 avec la description des variables $3..@
|
||||
# les descriptions sont de la forme var[:depvars,...]=desc
|
||||
# $1 reçoit les noms (depvars... var) parce que les variables dépendantes
|
||||
# doivent toujours être placées AVANT la variable maitre
|
||||
# $2 reçoit les noms (depvars...)
|
||||
# pour chaque description, une variable __TEMPLATE_DESC_var est créée avec
|
||||
# la valeur desc
|
||||
local __t_destvs="$1"; shift
|
||||
local __t_destnw="$1"; shift
|
||||
local -a __t_depvars
|
||||
local __t_vardesc __t_var __t_depvar __t_desc
|
||||
for __t_vardesc in "$@"; do
|
||||
splitvar "$__t_vardesc" __t_depvar __t_desc
|
||||
splitpair "$__t_depvar" __t_var __t_depvar
|
||||
array_split __t_depvars "$__t_depvar" ,
|
||||
for __t_depvar in "${__t_depvars[@]}"; do
|
||||
array_addu "$__t_destvs" "$__t_depvar"
|
||||
[ -n "$__t_destnw" ] && array_addu "$__t_destnw" "$__t_depvar"
|
||||
done
|
||||
array_del "$__t_destvs" "$__t_var"
|
||||
array_add "$__t_destvs" "$__t_var"
|
||||
eval "__TEMPLATE_DESC_$__t_var=\"\$__t_desc\""
|
||||
done
|
||||
}
|
||||
|
||||
function templatectl_config() {
|
||||
# Obtenir le chemin vers le fichier de configuration pour le répertoire $1
|
||||
# Si $2==nohideconfig, utiliser le nom CONFIG.conf, sinon utiliser par défaut
|
||||
# .CONFIG sauf si le fichier CONFIG.conf existe
|
||||
# Obtenir le chemin vers le fichier de configuration pour le répertoire $1 Si
|
||||
# l'un des fichiers CONFIG.conf ou .CONFIG existent déjà, prendre ceux-là.
|
||||
# Sinon, si $2==nohideconfig, utiliser le nom CONFIG.conf, sinon utiliser
|
||||
# .CONFIG
|
||||
local config="$(basename -- "$TEMPLATECTL_CONFIG")"
|
||||
if [ -f "$1/$config.conf" -o "$2" == nohideconfig ]; then
|
||||
echo "$1/$config.conf"
|
||||
else
|
||||
echo "$1/.$config"
|
||||
if [ -f "$1/$config.conf" ]; then echo "$1/$config.conf"
|
||||
elif [ -f "$1/.$config" ]; then echo "$1/.$config"
|
||||
elif [ "$2" == nohideconfig ]; then echo "$1/$config.conf"
|
||||
else echo "$1/.$config"
|
||||
fi
|
||||
}
|
||||
|
||||
|
@ -449,6 +476,8 @@ function templatectl_loadvars() {
|
|||
# devraient pas être écrits dans le fichier des variables, sauf si elles
|
||||
# reçoivent une valeur explicite de la part de l'utilisateur. Ce tableau est
|
||||
# mis à jour lors de l'analyse du tableau TEMPLATECTL_VARS
|
||||
# - TEMPLATE_USER_VARS contient une liste de noms de tableaux qui sont définis
|
||||
# en plus et qui peuvent être utilisés par des scripts annexes
|
||||
local -a __template_vars __dynamic_vars
|
||||
local __t_var __t_name __t_value
|
||||
|
||||
|
@ -469,6 +498,11 @@ function templatectl_loadvars() {
|
|||
done
|
||||
array_contains TEMPLATE_DYNAMIC_VARS configdir && __template_set_var configdir "$configdir"
|
||||
|
||||
is_defined TEMPLATE_USER_VARS || TEMPLATE_USER_VARS=()
|
||||
for __t_var in "${TEMPLATE_USER_VARS[@]}"; do
|
||||
is_defined "$__t_var" || array_new "$__t_var"
|
||||
done
|
||||
|
||||
local __t_modified=1
|
||||
for __t_var in "${TEMPLATECTL_VARS[@]}"; do
|
||||
splitvar "$__t_var" __t_name __t_value
|
||||
|
@ -479,20 +513,33 @@ function templatectl_loadvars() {
|
|||
|
||||
function templatectl_writevars() {
|
||||
# Ecrire les variables dans le fichier $1
|
||||
local __t_var
|
||||
local __t_var __t_desc
|
||||
echo "# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8" >"$1"
|
||||
for __t_var in "${TEMPLATE_USER_VARS[@]}"; do
|
||||
__t_desc="__TEMPLATE_DESC_$__t_var"
|
||||
[ -n "${!__t_desc}" ] && echo "# ${!__t_desc}" >>"$1"
|
||||
if is_array "$__t_var"; then
|
||||
set_array_cmd "$__t_var" >>"$1"
|
||||
else
|
||||
echo_setv "$__t_var" "${!__t_var}" >>"$1"
|
||||
fi
|
||||
done
|
||||
if [ ${#TEMPLATE_DYNAMIC_VARS[*]} -gt 0 ]; then
|
||||
echo "__dynamic_vars=(" >>"$1"
|
||||
for __t_var in "${TEMPLATE_DYNAMIC_VARS[@]}"; do
|
||||
array_contains TEMPLATE_NOWRITE_VARS "$__t_var" && continue
|
||||
echo_setv "$__t_var=${!__t_var}" >>"$1"
|
||||
__t_desc="__TEMPLATE_DESC_$__t_var"
|
||||
[ -n "${!__t_desc}" ] && echo "# ${!__t_desc}" >>"$1"
|
||||
echo_setv "$__t_var" "${!__t_var}" >>"$1"
|
||||
done
|
||||
echo ")" >>"$1"
|
||||
fi
|
||||
echo "__template_vars=(# ne pas modifier" >>"$1"
|
||||
for __t_var in "${TEMPLATE_STATIC_VARS[@]}"; do
|
||||
array_contains TEMPLATE_NOWRITE_VARS "$__t_var" && continue
|
||||
echo_setv "$__t_var=${!__t_var}" >>"$1"
|
||||
__t_desc="__TEMPLATE_DESC_$__t_var"
|
||||
[ -n "${!__t_desc}" ] && echo "# ${!__t_desc}" >>"$1"
|
||||
echo_setv "$__t_var" "${!__t_var}" >>"$1"
|
||||
done
|
||||
echo ")" >>"$1"
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue