74 lines
2.4 KiB
Bash
74 lines
2.4 KiB
Bash
|
|
#!/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."
|