gestion_table_tournante_libre/run.sh
Mathieu Benoit b9090508ff [ADD] run: make and ./run.sh, Electron start check, container matrix
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
2026-10-06 05:52:17 -04:00

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[@]}"}