diff --git a/runphp/build b/runphp/build index f87f43e..25d53fa 100755 --- a/runphp/build +++ b/runphp/build @@ -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" diff --git a/runphp/runphp b/runphp/runphp index 4bfe2ed..ea30726 100755 --- a/runphp/runphp +++ b/runphp/runphp @@ -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 ################################################################################