make with no target does what ./run.sh does: Electron on a graphical session, Vite's server without one or where Electron is not published (s390x, ppc64le). Every npm, npx and node recipe goes through the project's Node. make essai_demarrage starts the real Electron through Playwright and reads its window title, on Chromium's headless Ozone platform when there is no display: no X server is needed. scripts/verifier_systemes.sh replays install and tests in podman over the QEMU catalogue of TODO, and stops only its own containers. Checked: 17 Linux images and Nix pass all six steps; pwsh parses. --- FR --- [ADD] lancement : make et ./run.sh, essai d'Electron, matrice make sans cible fait ce que fait ./run.sh : Electron sur une session graphique, le serveur de Vite sans elle ou là où Electron n'est pas publié (s390x, ppc64le). Chaque recette npm, npx ou node passe par le Node du projet. make essai_demarrage lance la vraie coquille Electron par Playwright et lit le titre de sa fenêtre, sur la plateforme Ozone headless de Chromium sans écran : aucun serveur X n'est requis. scripts/verifier_systemes.sh rejoue installation et épreuves sous podman sur le catalogue QEMU de TODO, et n'arrête que ses conteneurs. Vérifié : 17 images Linux et Nix passent les six étapes ; pwsh analyse. Assisted-by: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01EUXSGcwCLSC69FWEdCtWSb
67 lines
2.2 KiB
Bash
Executable file
67 lines
2.2 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# © 2026 TechnoLibre (http://www.technolibre.ca)
|
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl)
|
|
|
|
# Lance l'application depuis les sources. Sur une session graphique, la
|
|
# coquille Electron charge la page que Vite construit dans www/ (§ 13.1) ;
|
|
# sans écran, ou là où Electron n'est pas publié, le serveur de
|
|
# développement de Vite la sert à un navigateur.
|
|
#
|
|
# ./run.sh Electron si possible, sinon le serveur de Vite
|
|
# ./run.sh --web le serveur de Vite, http://localhost:5173
|
|
# ./run.sh --electron Electron, ou un refus qui dit pourquoi
|
|
set -euo pipefail
|
|
cd -- "$(dirname -- "$0")"
|
|
. scripts/installation/commun.sh
|
|
|
|
mode=auto
|
|
for argument in "$@"; do
|
|
case "$argument" in
|
|
--web) mode=web ;;
|
|
--electron) mode=electron ;;
|
|
-h | --help)
|
|
sed -n '5,12p' "$0" | sed 's/^# \{0,1\}//'
|
|
exit 0
|
|
;;
|
|
*)
|
|
gtt_dire "usage : ./run.sh [--web | --electron]"
|
|
exit 2
|
|
;;
|
|
esac
|
|
done
|
|
|
|
[ "$(gtt_famille)" = windows ] && gtt_powershell lancer.ps1 "$@"
|
|
gtt_dans_nix_shell ./run.sh "$@"
|
|
gtt_preparer
|
|
|
|
if [ "$mode" = auto ]; then
|
|
if gtt_electron_disponible && gtt_session_graphique; then
|
|
mode=electron
|
|
else
|
|
mode=web
|
|
fi
|
|
fi
|
|
|
|
if [ "$mode" = web ]; then
|
|
gtt_dire "Serveur de développement de Vite : http://localhost:5173 (Ctrl+C pour l'arrêter)."
|
|
exec npm run --silent dev
|
|
fi
|
|
|
|
gtt_electron_disponible \
|
|
|| gtt_refuser "Electron n'est pas publié pour $(gtt_os_node)-$(gtt_arch_node) : ./run.sh --web."
|
|
gtt_session_graphique \
|
|
|| gtt_refuser "aucune session graphique (DISPLAY, WAYLAND_DISPLAY) : ./run.sh --web ; make essai_demarrage lance Electron sans écran."
|
|
options=()
|
|
if [ "$(gtt_os_node)" = linux ]; then
|
|
if [ "$(id -u)" = 0 ]; then
|
|
gtt_dire "Sous root, Chromium refuse son bac à sable : Electron se lance sans."
|
|
options+=(--no-sandbox)
|
|
elif ! gtt_bac_a_sable_pret; then
|
|
gtt_dire "Le bac à sable d'Electron demande chrome-sandbox setuid root (espaces de noms restreints)."
|
|
gtt_confirmer "Le poser par sudo ?" \
|
|
|| gtt_refuser "bac à sable non posé : ./install.sh le pose, puis relancer."
|
|
gtt_preparer_bac_a_sable
|
|
fi
|
|
fi
|
|
npm run --silent build
|
|
exec npx --no-install electron . ${options[@]+"${options[@]}"}
|