gestion_table_tournante_libre/install.sh
Mathieu Benoit d83362166a [ADD] install: Node 26 and system packages, per family and under Nix
./install.sh installs what is missing through apt, dnf, zypper or
pacman, then Node of the .node-version major from nodejs.org, SHA-256
checked, outside the repository, then npm ci and Electron's binary,
which its package no longer fetches at install; ldd refuses a missing
library. ./install_dev.sh adds Playwright's Chromium, fonts, and podman
on amd64. Under NixOS a pinned shell.nix provides Node, Electron and
Chromium, which the browser tests then launch. Build-script tests run
on Linux only, where § 16 builds.

Checked: ten library tests, three mutations caught; local install.

--- FR ---

[ADD] installation : Node 26 et paquets du système, par famille et Nix

./install.sh installe ce qui manque par apt, dnf, zypper ou pacman, puis
Node de la majeure de .node-version, de nodejs.org, somme SHA-256
vérifiée, hors du dépôt, puis npm ci et le binaire d'Electron, que son
paquet ne télécharge plus à l'installation ; ldd refuse une bibliothèque
absente. ./install_dev.sh ajoute le Chromium de Playwright, des polices,
et podman sur amd64. Sous NixOS, un shell.nix épinglé fournit Node,
Electron et Chromium, que lancent alors les épreuves du navigateur. Les
épreuves du script de construction ne se jouent que sous Linux (§ 16).

Vérifié : dix épreuves de la bibliothèque, trois mutations attrapées ;
installation locale.

Assisted-by: Claude Opus 5.5
Claude-Session: https://claude.ai/code/session_01EUXSGcwCLSC69FWEdCtWSb
2026-10-06 05:52:05 -04:00

73 lines
2.4 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)
# Installe de quoi lancer l'application depuis les sources et jouer les
# épreuves sous node : les outils et les bibliothèques du système, Node de la
# majeure de .node-version, et les dépendances de package-lock.json.
# Relancé, il ne refait que ce qui manque.
#
# ./install.sh
#
# Sous Windows (bash de Git), la main passe à install.cmd ; sous NixOS, à
# scripts/installation/shell.nix, qui déclare ce que les autres systèmes
# installent.
set -euo pipefail
cd -- "$(dirname -- "$0")"
. scripts/installation/commun.sh
for argument in "$@"; do
case "$argument" in
-h | --help)
sed -n '5,9p' "$0" | sed 's/^# \{0,1\}//'
exit 0
;;
*)
gtt_dire "usage : ./install.sh"
exit 2
;;
esac
done
famille="$(gtt_famille)"
case "$famille" in
windows) gtt_powershell installer.ps1 ;;
nixos)
gtt_dans_nix_shell ./install.sh
gtt_npm_ci
gtt_dire "Installation terminée. Lancer : ./run.sh, ou make."
exit 0
;;
macos)
xcode-select -p > /dev/null 2>&1 \
|| gtt_dire "Outils de ligne de commande de Xcode absents, dont make : xcode-select --install"
;;
debian | fedora | suse | arch)
paquets="$(gtt_paquets_outils "$famille")"
if gtt_electron_disponible; then
paquets="$paquets $(gtt_paquets_electron "$famille")"
fi
# shellcheck disable=SC2086
gtt_installer_paquets "$famille" $paquets
;;
*)
gtt_refuser "système non reconnu ($(uname -s), /etc/os-release). Systèmes pris en charge :" \
"Debian, Ubuntu, Proxmox VE, Fedora, AlmaLinux, Rocky Linux, openSUSE, Arch, NixOS, macOS, Windows." \
"Un dérivé se rattache à sa famille : GTT_FAMILLE=debian ./install.sh (debian, fedora, suse, arch)."
;;
esac
gtt_poser_node
gtt_activer_node
if ! gtt_electron_disponible; then
gtt_dire "Electron n'est pas publié pour $(gtt_os_node)-$(gtt_arch_node) :" \
"./run.sh servira l'application à un navigateur."
fi
gtt_npm_ci
if gtt_electron_disponible && [ "$(gtt_os_node)" = linux ]; then
manquantes="$(gtt_bibliotheques_manquantes node_modules/electron/dist/electron)"
[ -z "$manquantes" ] || gtt_refuser "Electron ne trouve pas :" "$manquantes"
gtt_preparer_bac_a_sable
fi
gtt_dire "Installation terminée. Lancer : ./run.sh, ou make."