inclure les template phpwrappers

This commit is contained in:
Jephté Clain 2025-06-04 17:27:25 +04:00
parent c8f7f7cbaa
commit 9676be2dd6
5 changed files with 83 additions and 46 deletions

View File

@ -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

View File

@ -1,12 +1,12 @@
# TODO Faire une copie de ce script dans un répertoire de l'application web # 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
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
<?php <?php
require __DIR__ . '/../vendor/autoload.php'; require __DIR__.'/../vendor/autoload.php';
# Lancer une application en ligne de commande # Lancer une application en ligne de commande
const NULIB_APP_app_params = [ const NULIB_APP_app_params = [
"projdir" => __DIR__ . '/..', "projdir" => __DIR__.'/..',
"appcode" => \app\config\bootstrap::APPCODE, "appcode" => \app\config\bootstrap::APPCODE,
]; ];
require __DIR__.'/../vendor/nulib/base/php/src/app/cli/include-launcher.php'; require __DIR__.'/../vendor/nulib/base/php/src/app/cli/include-launcher.php';

View File

@ -9,7 +9,7 @@ use nulib\app;
use nulib\tools\BgLauncherApp; use nulib\tools\BgLauncherApp;
# chemin vers le lanceur PHP # 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([ app::init([
"projdir" => __DIR__.'/..', "projdir" => __DIR__.'/..',

View File

@ -1,5 +1,5 @@
# TODO Faire une copie de ce script dans un répertoire de l'application web # 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 #!/bin/bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 # -*- 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 for i in *.php*; do
[ -f "$i" ] || continue [ -f "$i" ] || continue
name="bin/${i%.*}.php" name="bin/${i%.*}.php"
dest="../_cli/_wrapper.sh" dest="../@@CLI@@/_wrapper.sh"
link="../bin/${i%.*}.php" link="../bin/${i%.*}.php"
if [ -L "$link" ]; then if [ -L "$link" ]; then
echo "* $name OK" echo "* $name OK"

View File

@ -40,11 +40,31 @@ p == 1 {
ac_clean "$conf0" 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= projdir=
install_phpwrappers=auto
args=( args=(
"Mettre à jour le script runphp" "Mettre à jour le script runphp"
"[path/to/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[@]}" parse_args "$@"; set -- "${args[@]}"
@ -93,6 +113,7 @@ else
fi fi
# (Re)construire le fichier destination # (Re)construire le fichier destination
estep "$(relpath "$runphp")"
( (
cat "$preamble" cat "$preamble"
echo echo
@ -102,24 +123,79 @@ fi
) >"$runphp" ) >"$runphp"
[ -x "$runphp" ] || chmod +x "$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/" rsync -lpt "$MYDIR/Dockerfile.runphp" "$rundir/"
if [ -n "$projdir" ]; then if [ -n "$projdir" ]; then
if testdiff "$rundir/build" "$MYDIR/build"; then if testdiff "$rundir/build" "$MYDIR/build"; then
estep "$(relpath "$rundir/build")"
cp "$MYDIR/build" "$rundir/build" cp "$MYDIR/build" "$rundir/build"
chmod +x "$rundir/build" chmod +x "$rundir/build"
fi fi
if [ ! -f "$projdir/..env.dist" ]; then if [ ! -f "$projdir/..env.dist" ]; then
estep "$(relpath "$projdir/..env.dist")"
sed <"$MYDIR/dot-build.env.dist" >"$projdir/..env.dist" ' sed <"$MYDIR/dot-build.env.dist" >"$projdir/..env.dist" '
/^IMAGENAME=/s/=.*\//='"$(basename -- "$projdir")"'\// /^IMAGENAME=/s/=.*\//='"$(basename -- "$projdir")"'\//
' '
initial_config=1 initial_config=1
fi fi
if [ ! -f "$projdir/.runphp.conf" ]; then if [ ! -f "$projdir/.runphp.conf" ]; then
estep "$(relpath "$projdir/.runphp.conf")"
sed <"$MYDIR/dot-runphp.conf" >"$projdir/.runphp.conf" ' sed <"$MYDIR/dot-runphp.conf" >"$projdir/.runphp.conf" '
/^RUNPHP=/s/=.*/=sbin\/runphp/ /^RUNPHP=/s/=.*/=sbin\/runphp/
' '
fi 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 fi
[ -n "$initial_config" ] [ -n "$initial_config" ]