From add9cfde3b3b74b026964efec73afd624af109e2 Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Tue, 3 Jun 2025 10:22:15 +0400 Subject: [PATCH 01/18] Init changelog & version 0.6.1p82 --- CHANGES.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index dd5ff1e..a8633fc 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,5 @@ +## Release 0.6.1p82 du 03/06/2025-10:22 + ## Release 0.6.1p74 du 03/06/2025-10:21 * `51ce95e` maj doc From 7b118682dbcf5d9d5fca8df34881be3d8e814bcc Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Tue, 3 Jun 2025 10:24:32 +0400 Subject: [PATCH 02/18] maj doc --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 642d838..40f800a 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,8 @@ echo "commit=$commit" # reprendre la valeur affichée par la précédente commande commit=XXX +pu + git checkout dev74 git cherry-pick "$commit" From c8f7f7cbaa8a05ecad744a79a9f653ef11405e83 Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Wed, 4 Jun 2025 16:28:04 +0400 Subject: [PATCH 03/18] maj doc --- wip/pman.md | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/wip/pman.md b/wip/pman.md index 3968ad8..50460ec 100644 --- a/wip/pman.md +++ b/wip/pman.md @@ -6,9 +6,22 @@ outil pour gérer les projets PHP projets dépendants du projet courant * pver: gestion des versions. calculer la prochaine version en respectant semver -* pmer: gérer les branches de features et hotfixes. -* prel: faire une release. - ces outils peuvent agir sur les projets dépendants: faire une release sur un - projet downstream, ou synchroniser la version depuis un projet upstream + +## scripts de gestion de projet + +définir précisément le rôle des scripts +* pdist: créer la branche DIST, basculer dessus, merger MAIN dans DIST +* pmain: initialiser la branche MAIN (si nouveau dépôt), basculer dessus, merger DEVELOP dans MAIN + (s'occupe aussi de la configuration pman.conf) +* pdev: créer la branche DEVELOP, basculer dessus +* pwip: créer une branche WIP, basculer dessus si unique (ou laisser le choix), merger WIP dans DEVELOP +* PEUT-ETRE: pfix: créer une branche HOTFIX, basculer dessus si unique (ou laisser le choix), merger HOTFIX dans MAIN +* prel: faire une release de DEVELOP dans MAIN. à terme, support des branches de hotfix + * il s'agit d'une spécialisation de pmain et/ou pfix pour la gestion des releases + * à terme, gestion en cascade des projets dépendants: release sur un projet downstream, ou synchroniser la version depuis un projet upstream + +il faudra supprimer +* pman: fonctionnalités réparties dans les autres scripts spécialisés +* pmer: fonctionnalités réperties dans les autres scripts spécialisés -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary \ No newline at end of file From 9676be2dd6a23a9e52563b226a9494f5880950e4 Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Wed, 4 Jun 2025 17:27:25 +0400 Subject: [PATCH 04/18] 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" ] From 8cab7b6064f2e512298f9b25e7dfdcc27d011b06 Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Wed, 4 Jun 2025 17:28:44 +0400 Subject: [PATCH 05/18] modifs.mineures sans commentaires --- .udir | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.udir b/.udir index f0bc74b..1f19bde 100644 --- a/.udir +++ b/.udir @@ -9,7 +9,7 @@ uinc_options=() uinc_args=() preconfig_scripts=() configure_variables=(dest) -configure_dest_for=(lib/profile.d/nulib-base) +configure_dest_for=(lib/profile.d/nulib) config_scripts=(lib/uinst/conf) install_profiles=true profiledir=lib/profile.d From 88436296e74a536dbd73d08cfdd62127cfe4a665 Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Wed, 4 Jun 2025 19:35:14 +0400 Subject: [PATCH 06/18] maj projet --- .idea/nulib-base.iml | 1 + .idea/php-test-framework.xml | 14 ++++++++++++++ .idea/php.xml | 12 +++++++++++- .idea/phpunit.xml | 10 ++++++++++ runphp/update-runphp.sh | 28 +++++++++++++++------------- 5 files changed, 51 insertions(+), 14 deletions(-) create mode 100644 .idea/php-test-framework.xml create mode 100644 .idea/phpunit.xml diff --git a/.idea/nulib-base.iml b/.idea/nulib-base.iml index c88c3c8..55df4ce 100644 --- a/.idea/nulib-base.iml +++ b/.idea/nulib-base.iml @@ -4,6 +4,7 @@ + diff --git a/.idea/php-test-framework.xml b/.idea/php-test-framework.xml new file mode 100644 index 0000000..4b2e111 --- /dev/null +++ b/.idea/php-test-framework.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/php.xml b/.idea/php.xml index aced70d..7e6be21 100644 --- a/.idea/php.xml +++ b/.idea/php.xml @@ -1,5 +1,10 @@ + + + + + @@ -10,6 +15,11 @@