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
|
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() {
|
function templatectl_config() {
|
||||||
# Obtenir le chemin vers le fichier de configuration pour le répertoire $1
|
# Obtenir le chemin vers le fichier de configuration pour le répertoire $1 Si
|
||||||
# Si $2==nohideconfig, utiliser le nom CONFIG.conf, sinon utiliser par défaut
|
# l'un des fichiers CONFIG.conf ou .CONFIG existent déjà, prendre ceux-là.
|
||||||
# .CONFIG sauf si le fichier CONFIG.conf existe
|
# Sinon, si $2==nohideconfig, utiliser le nom CONFIG.conf, sinon utiliser
|
||||||
|
# .CONFIG
|
||||||
local config="$(basename -- "$TEMPLATECTL_CONFIG")"
|
local config="$(basename -- "$TEMPLATECTL_CONFIG")"
|
||||||
if [ -f "$1/$config.conf" -o "$2" == nohideconfig ]; then
|
if [ -f "$1/$config.conf" ]; then echo "$1/$config.conf"
|
||||||
echo "$1/$config.conf"
|
elif [ -f "$1/.$config" ]; then echo "$1/.$config"
|
||||||
else
|
elif [ "$2" == nohideconfig ]; then echo "$1/$config.conf"
|
||||||
echo "$1/.$config"
|
else echo "$1/.$config"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -449,6 +476,8 @@ function templatectl_loadvars() {
|
||||||
# devraient pas être écrits dans le fichier des variables, sauf si elles
|
# 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
|
# reçoivent une valeur explicite de la part de l'utilisateur. Ce tableau est
|
||||||
# mis à jour lors de l'analyse du tableau TEMPLATECTL_VARS
|
# 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 -a __template_vars __dynamic_vars
|
||||||
local __t_var __t_name __t_value
|
local __t_var __t_name __t_value
|
||||||
|
|
||||||
|
@ -469,6 +498,11 @@ function templatectl_loadvars() {
|
||||||
done
|
done
|
||||||
array_contains TEMPLATE_DYNAMIC_VARS configdir && __template_set_var configdir "$configdir"
|
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
|
local __t_modified=1
|
||||||
for __t_var in "${TEMPLATECTL_VARS[@]}"; do
|
for __t_var in "${TEMPLATECTL_VARS[@]}"; do
|
||||||
splitvar "$__t_var" __t_name __t_value
|
splitvar "$__t_var" __t_name __t_value
|
||||||
|
@ -479,20 +513,33 @@ function templatectl_loadvars() {
|
||||||
|
|
||||||
function templatectl_writevars() {
|
function templatectl_writevars() {
|
||||||
# Ecrire les variables dans le fichier $1
|
# 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"
|
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
|
if [ ${#TEMPLATE_DYNAMIC_VARS[*]} -gt 0 ]; then
|
||||||
echo "__dynamic_vars=(" >>"$1"
|
echo "__dynamic_vars=(" >>"$1"
|
||||||
for __t_var in "${TEMPLATE_DYNAMIC_VARS[@]}"; do
|
for __t_var in "${TEMPLATE_DYNAMIC_VARS[@]}"; do
|
||||||
array_contains TEMPLATE_NOWRITE_VARS "$__t_var" && continue
|
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
|
done
|
||||||
echo ")" >>"$1"
|
echo ")" >>"$1"
|
||||||
fi
|
fi
|
||||||
echo "__template_vars=(# ne pas modifier" >>"$1"
|
echo "__template_vars=(# ne pas modifier" >>"$1"
|
||||||
for __t_var in "${TEMPLATE_STATIC_VARS[@]}"; do
|
for __t_var in "${TEMPLATE_STATIC_VARS[@]}"; do
|
||||||
array_contains TEMPLATE_NOWRITE_VARS "$__t_var" && continue
|
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
|
done
|
||||||
echo ")" >>"$1"
|
echo ")" >>"$1"
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue