From 9676be2dd6a23a9e52563b226a9494f5880950e4 Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Wed, 4 Jun 2025 17:27:25 +0400 Subject: [PATCH] inclure les template phpwrappers --- php/support/copy-templates | 39 ---------- .../phpwrapper-.launcher.php | 6 +- .../phpwrapper-_bg_launcher.php | 2 +- .../phpwrapper-_wrapper.sh | 4 +- runphp/update-runphp.sh | 78 ++++++++++++++++++- 5 files changed, 83 insertions(+), 46 deletions(-) delete mode 100755 php/support/copy-templates rename php/support/template-.launcher.php => runphp/phpwrapper-.launcher.php (69%) rename php/support/template-_bg_launcher.php => runphp/phpwrapper-_bg_launcher.php (88%) rename php/support/template-_wrapper.sh => runphp/phpwrapper-_wrapper.sh (96%) diff --git a/php/support/copy-templates b/php/support/copy-templates deleted file mode 100755 index a426860..0000000 --- a/php/support/copy-templates +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash -# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 -source "$(dirname -- "$0")/../../load.sh" || exit 1 - -declare -A DESTDIRS=( - [template-_bg_launcher.php]=sbin - [template-.launcher.php]=_cli - [template-_wrapper.sh]=_cli -) -declare -A MODES=( - [template-_bg_launcher.php]=+x - [template-.launcher.php]= - [template-_wrapper.sh]=+x -) - -projdir= -args=( - "copier les templates dans le projet en cours" - #"usage" - -d:,--projdir: . -) -parse_args "$@"; set -- "${args[@]}" - -if [ -n "$projdir" ]; then - cd "$projdir" || die -fi - -[ -f composer.json ] || die "$(basename "$(dirname "$(pwd)")"): n'est pas un projet composer" - -setx -a templates=ls_files "$MYDIR" "template-*" -for template in "${templates[@]}"; do - destdir="${DESTDIRS[$template]}" - [ -n "$destdir" ] || die "$template: la destination n'est pas configurée" - mode="${MODES[$template]}" - destname="${template#template-}" - - tail -n+4 "$MYDIR/$template" >"$destdir/$destname" - [ -n "$mode" ] && chmod "$mode" "$destdir/$destname" -done diff --git a/php/support/template-.launcher.php b/runphp/phpwrapper-.launcher.php similarity index 69% rename from php/support/template-.launcher.php rename to runphp/phpwrapper-.launcher.php index b1a3879..adabe3d 100644 --- a/php/support/template-.launcher.php +++ b/runphp/phpwrapper-.launcher.php @@ -1,12 +1,12 @@ # TODO Faire une copie de ce script dans un répertoire de l'application web -# (dans le répertoire _cli/ par défaut) et modifier les paramètres si nécessaire +# (dans le répertoire cli_config/ par défaut) et modifier les paramètres si nécessaire #------------------------------------------------------------------------------- __DIR__ . '/..', + "projdir" => __DIR__.'/..', "appcode" => \app\config\bootstrap::APPCODE, ]; require __DIR__.'/../vendor/nulib/base/php/src/app/cli/include-launcher.php'; diff --git a/php/support/template-_bg_launcher.php b/runphp/phpwrapper-_bg_launcher.php similarity index 88% rename from php/support/template-_bg_launcher.php rename to runphp/phpwrapper-_bg_launcher.php index 88147f5..42879be 100644 --- a/php/support/template-_bg_launcher.php +++ b/runphp/phpwrapper-_bg_launcher.php @@ -9,7 +9,7 @@ use nulib\app; use nulib\tools\BgLauncherApp; # chemin vers le lanceur PHP -const NULIB_APP_app_launcher = __DIR__.'/../_cli/.launcher.php'; +const NULIB_APP_app_launcher = __DIR__.'/../@@CLI@@/.launcher.php'; app::init([ "projdir" => __DIR__.'/..', diff --git a/php/support/template-_wrapper.sh b/runphp/phpwrapper-_wrapper.sh similarity index 96% rename from php/support/template-_wrapper.sh rename to runphp/phpwrapper-_wrapper.sh index 22c34f6..05569e8 100644 --- a/php/support/template-_wrapper.sh +++ b/runphp/phpwrapper-_wrapper.sh @@ -1,5 +1,5 @@ # TODO Faire une copie de ce script dans un répertoire de l'application web -# (dans le répertoire _cli/ par défaut) et modifier les paramétres si nécessaire +# (dans le répertoire cli_config/ par défaut) et modifier les paramétres si nécessaire #------------------------------------------------------------------------------- #!/bin/bash # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 @@ -57,7 +57,7 @@ Vérification des liens..." for i in *.php*; do [ -f "$i" ] || continue name="bin/${i%.*}.php" - dest="../_cli/_wrapper.sh" + dest="../@@CLI@@/_wrapper.sh" link="../bin/${i%.*}.php" if [ -L "$link" ]; then echo "* $name OK" diff --git a/runphp/update-runphp.sh b/runphp/update-runphp.sh index 05403fe..48a6095 100755 --- a/runphp/update-runphp.sh +++ b/runphp/update-runphp.sh @@ -40,11 +40,31 @@ p == 1 { ac_clean "$conf0" } +declare -A PHPWRAPPER_DESTDIRS=( + [_bg_launcher.php]=sbin + [.launcher.php]=cli + [_wrapper.sh]=cli +) +declare -A PHPWRAPPER_MODES=( + [_bg_launcher.php]=+x + [.launcher.php]= + [_wrapper.sh]=+x +) + projdir= +install_phpwrappers=auto args=( "Mettre à jour le script runphp" "[path/to/runphp]" - -d:,--projdir:PROJDIR . "Copier les fichiers pour un projet de l'université de la Réunion" + -d:,--projdir:PROJDIR . "\ +Copier les fichiers pour un projet de l'université de la Réunion: +- BUILDENV0 et BUILDENV sont fixés à ..env.dist et .env +- les fichiers ..env.dist et .runphp.conf sont créés le cas échéant +- le script build est mis à jour +- les wrappers PHP pour la gestion des tâches de fond sont mis à jour le cas + échéant" + -p,--phpwrappers-install install_phpwrappers=1 "forcer l'installation des wrappers PHP" + --np,--no-phpwrappers-install install_phpwrappers= "ne pas installer les wrappers PHP" ) parse_args "$@"; set -- "${args[@]}" @@ -93,6 +113,7 @@ else fi # (Re)construire le fichier destination +estep "$(relpath "$runphp")" ( cat "$preamble" echo @@ -102,24 +123,79 @@ fi ) >"$runphp" [ -x "$runphp" ] || chmod +x "$runphp" +eval "$( +vars=(PROJDIR COMPOSERDIR COMPOSERPHAR VENDORDIR BUILDENV0 BUILDENV BUILD_FLAVOUR DIST IMAGENAME) +arrays=(BUILD_IMAGES DISTFILES TEMPLATEFILES VARFILES) +for var in "${vars[@]}"; do eval "$var="; done +for array in "${arrays[@]}"; do eval "$array=()"; done +source "$runphp" +for var in "${vars[@]}"; do echo_setv2 "$var"; done +for array in "${arrays[@]}"; do echo_seta2 "$array"; done +)" + +estep "$(relpath "$rundir/Dockerfile.runphp")" rsync -lpt "$MYDIR/Dockerfile.runphp" "$rundir/" if [ -n "$projdir" ]; then if testdiff "$rundir/build" "$MYDIR/build"; then + estep "$(relpath "$rundir/build")" cp "$MYDIR/build" "$rundir/build" chmod +x "$rundir/build" fi if [ ! -f "$projdir/..env.dist" ]; then + estep "$(relpath "$projdir/..env.dist")" sed <"$MYDIR/dot-build.env.dist" >"$projdir/..env.dist" ' /^IMAGENAME=/s/=.*\//='"$(basename -- "$projdir")"'\// ' initial_config=1 fi if [ ! -f "$projdir/.runphp.conf" ]; then + estep "$(relpath "$projdir/.runphp.conf")" sed <"$MYDIR/dot-runphp.conf" >"$projdir/.runphp.conf" ' /^RUNPHP=/s/=.*/=sbin\/runphp/ ' fi + + sbin_dest=sbin + cli_dest=cli_config + if [ "$install_phpwrappers" == auto ]; then + if [ ! -f "$PROJDIR/$COMPOSERDIR/composer.json" ]; then + # ce doit être un projet PHP + install_phpwrappers= + elif [ -d "$projdir/cli_config" ]; then + install_phpwrappers=1 + sbin_dest=sbin + cli_dest=cli_config + elif [ -d "$projdir/_cli" ]; then + install_phpwrappers=1 + sbin_dest=sbin + cli_dest=_cli + else + install_phpwrappers= + fi + fi + + if [ -n "$install_phpwrappers" ]; then + setx -a phpwrappers=ls_files "$MYDIR" "phpwrapper-*" + for phpwrapper in "${phpwrappers[@]}"; do + destname="${phpwrapper#phpwrapper-}" + destdir="${PHPWRAPPER_DESTDIRS[$destname]}" + [ -n "$destdir" ] || die "$phpwrapper: la destination n'est pas configurée" + mode="${PHPWRAPPER_MODES[$destname]}" + + case "$destdir" in + sbin) destdir="$PROJDIR/$sbin_dest";; + cli) destdir="$PROJDIR/$cli_dest";; + *) destdir="$PROJDIR/$destdir";; + esac + + estep "$(relpath "$destdir/$destname")" + mkdir -p "$destdir" + tail -n+4 "$MYDIR/$phpwrapper" | + sed "s|/@@CLI@@/|/$cli_dest/|" >"$destdir/$destname" + [ -n "$mode" ] && chmod "$mode" "$destdir/$destname" + done + fi fi [ -n "$initial_config" ]