# ulib/template

## `template_list`
~~~
Soit $N le séparateur --, lister les fichiers des répertoires sources
$2..$(N-1) qui seraient fusionnés avec template_merge() ou supprimés avec
template_unmerge() du répertoire destination $1. Si des chemins sont spécifiés
avec les arguments $(N+1)..@, ne traiter que les fichiers qui correspondent à
ces spécifications. Exemple:
template_list destdir srcdirs... -- specs...
~~~
## `template_merge`
~~~
Soit $N le séparateur --, copier dans le répertoire destination $1 les
fichiers des répertoires sources $2..$(N-1) correspondant aux spécifications
$(N+1)..@, si ces fichiers n'ont pas été modifiés dans le répertoire de
destination.
Les fichiers sources ayant l'extension .template sont ignorés par défaut, sauf
s'ils sonts demandés explicitement. Exemple:
template_merge destdir srcdirs... -- specs...
~~~
## `template_unmerge`
~~~
Soit $N le séparateur --, supprimer du répertoire destination $1 les fichiers
provenant des répertoires sources $2..$(N-1) et qui n'ont pas été modifiés. Si
des chemins sont spécifiés avec les arguments $(N+1)..@, ne traiter que les
fichiers qui correspondent à ces spécifications. Exemple:
template_unmerge destdir srcdirs... -- specs...
~~~
## `template_cleandest`
~~~
Supprimer dans le répertoire de destination $1 tous les répertoires vides.
Cette fonction est habituellement utilisée après template_unmerge()
Ignorer les chemins qui contiennent .git/ et .svn/
~~~
## `template_diff`
~~~
Afficher les différences entre les fichiers du répertoire de destination $1 et
les fichiers des répertoires sources $2..@
~~~
## `template_srcdir`
~~~
Obtenir le chemin vers le répertoire source de templates $1, situé dans
ULIBDIR/templates
~~~
## `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
~~~
## `templatectl_config`
~~~
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
~~~
## `templatectl_loadvars`
~~~
Charger les valeurs des variables depuis le fichier $1
Les variables suivantes doivent être définies:
- Le tableau TEMPLATECTL_DEFAULTS permet de donner une valeur par défaut aux
variables mentionnées dans TEMPLATE_STATIC_VARS. C'est une liste de valeurs
de la forme 'name=value'
- Le tableau TEMPLATECTL_VARS contient des variables supplémentaires
spécifiées par l'utilisateur. C'est une liste de valeurs de la forme
'name=value'
- TEMPLATE_STATIC_VARS doit contenir une liste de noms de variables qui
peuvent être remplacés dans les fichiers de template.
- TEMPLATE_DYNAMIC_VARS contient une liste de noms de variables valides, mais
qui ne doivent pas être remplacés, en effet, ils sont utilisés pour le
déploiement des fichiers.
- TEMPLATE_NOWRITE_VARS contient une liste de noms de variables qui ne
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
~~~
## `templatectl_writevars`
~~~
Ecrire les variables dans le fichier $1
~~~
## `templatectl_list_vars`
~~~
Afficher les valeurs des variables
~~~
## `templatectl`
~~~
Fonction de haut niveau qui facilite l'utilisation des fonctions template_*
définir la fonction __display_templatectl_help() pour l'affichage de l'aide
- Le tableau TEMPLATECTL_SRCDIRS doit contenir la liste des répertoires
sources pour les templates. Alternativement, il est possible de définir la
variable TEMPLATECTL_SRCDIR s'il n'y a qu'un seul répertoire source pour le
template
- TEMPLATECTL_CONFIG est le nom de base du fichier à partir duquel sont
chargées les variables et dans lequel sont écrites les variables avec
l'option --write-vars
Si le nom de base est CONFIG, le fichier s'appelera .CONFIG si l'option
--hide-config est utilisée (par défaut) ou CONFIG.conf si l'option
--no-hide-config est utilisée
Les variables de template_loadvars() sont aussi prises en compte
~~~

-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary