support fichiers template

This commit is contained in:
Jephté Clain 2025-03-17 20:47:30 +04:00
parent 8cbe9c7654
commit 2fd5b9933d
2 changed files with 59 additions and 28 deletions

View File

@ -6,7 +6,7 @@ RUNPHP="$MYDIR/runphp"
RUNPHP_STANDALONE=
PROJDIR=; COMPOSERDIR=; COMPOSERPHAR=; VENDORDIR=; BUILDENV0=; BUILDENV=
BUILD_IMAGES=(php-apache mariadb10); export BUILD_FLAVOUR=; DIST=; IMAGENAME=
DISTFILES=()
DISTFILES=(); TEMPLATEFILES=(); VARFILES=()
source "$RUNPHP" || exit 1
source "$PROJDIR/$VENDORDIR/nulib/php/load.sh" || exit 1
require: template
@ -56,41 +56,59 @@ function dcrunning() {
function build_check_env() {
eval "$(template_locals)"
local updatedenv distfile distname
local -a updatedfiles distfiles
local updatedenv file name
local -a updatedfiles files
if template_copy_missing "$PROJDIR/$BUILDENV0"; then
updated=1
updatedenv=1
fi
for distfile in "${DISTFILES[@]}"; do
if [ -f "$PROJDIR/$distfile" ]; then
if template_copy_missing "$PROJDIR/$distfile"; then
for file in "${DISTFILES[@]}"; do
if [ -f "$PROJDIR/$file" ]; then
if template_copy_missing "$PROJDIR/$file"; then
updated=1
setx distname=basename -- "$distfile"
distname="${distname#.}"; distname="${distname%.dist}"
setx distfile=dirname -- "$distfile"
distfile="$distfile/$distname"
updatedfiles+=("$distfile")
setx name=basename -- "$file"
name="${name#.}"; name="${name%.}"
setx file=dirname -- "$file"
file="$file/$name"
updatedfiles+=("$file")
fi
elif [ -d "$PROJDIR/$distfile" ]; then
local distdir="$PROJDIR/$distfile"
setx -a distfiles=find "$distdir" -type f -name ".*.dist"
for distfile in "${distfiles[@]}"; do
if template_copy_missing "$distfile"; then
elif [ -d "$PROJDIR/$file" ]; then
local dir="$PROJDIR/$file"
setx -a files=find "$dir" -type f -name ".*.dist"
for file in "${files[@]}"; do
if template_copy_missing "$file"; then
updated=1
setx distname=basename -- "$distfile"
distname="${distname#.}"; distname="${distname%.dist}"
setx distfile=dirname -- "$distfile"
distfile="$distfile/$distname"
updatedfiles+=("${distfile#$PROJDIR/}")
setx name=basename -- "$file"
name="${name#.}"; name="${name%.}"
setx file=dirname -- "$file"
file="$file/$name"
updatedfiles+=("${file#$PROJDIR/}")
fi
done
else
ewarn "$distfile: fichier introuvable"
ewarn "$file: fichier dist introuvable"
fi
done
template_process_userfiles
for file in "${TEMPLATEFILES[@]}"; do
if [ -f "$PROJDIR/$file" ]; then
template_copy_replace "$PROJDIR/$file"
elif [ -d "$PROJDIR/$file" ]; then
local dir="$PROJDIR/$file"
setx -a files=find "$dir" -type f -name ".*.template"
for file in "${files[@]}"; do
template_copy_replace "$file"
done
else
ewarn "$file: fichier template introuvable"
fi
done
local -a varfiles
for file in "${VARFILES[@]}"; do
varfiles+=("$PROJDIR/$file")
done
template_process_userfiles "${varfiles[@]}"
if [ -n "$updated" ]; then
enote "IMPORTANT: vous devez paramétrer certains fichiers avant de pouvoir construire les images"

View File

@ -47,14 +47,27 @@ DIST=
# Nom de base de l'image (sans le registry), e.g prefix/
IMAGENAME=
## Fichiers .dist
## Lors du build, les fichiers de la forme .name.dist sont copiés vers un
## fichier name sauf s'il existe déjà
## Fichiers .dist et .template
# Lors du build, les fichiers de la forme .name.dist sont copiés vers un
# fichier name sauf s'il existe déjà. Si un fichier name.dist.local existe, il
# est utilisé à la place de .name.dist
# Les fichiers de la forme .name.template sont copiés *systématiquement* vers
# le fichier name. Si un fichier name.template.local existe, il est utilisé à
# la place de .name.template
# Liste de fichiers (ou de répertoirs à considérer). Pour chaque répertoire, les
# fichiers .*.dist dans l'arborescence du répertoire sont recherchés
# Liste de fichiers (ou de répertoires à considérer). Pour chaque répertoire,
# les fichiers .*.dist dans l'arborescence du répertoire sont recherchés
DISTFILES=()
# Liste de fichiers (ou de répertoires à considérer). Pour chaque répertoire,
# les fichiers .*.template dans l'arborescence du répertoire sont recherchés
TEMPLATEFILES=()
# Fichiers contenant les valeurs des variables utilisées pour l'interpolation
# des fichiers dist et template. Seules les variables définies dans ces fichiers
# sont interpolées.
VARFILES=()
#EOF:runphp.userconf:ne pas modifier cette ligne
################################################################################