From 1724ce5e39047816f5b9db9593273053ea1dcc5c Mon Sep 17 00:00:00 2001 From: Mathieu Benoit Date: Wed, 14 Oct 2026 00:38:52 -0400 Subject: [PATCH] [IMP] create_exe.sh: ask before overwriting this version's executable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit An existing executable for the current version stopped the build with a refusal, and the only way past it was to rerun with --reconstruire. The script now asks [o/N] first: yes rebuilds it, anything else keeps it and stops. Without a terminal the answer is no, so a script or a pipe never overwrites a binary by accident; --reconstruire and GTT_OUI=1 skip the question. Checked in a terminal against a stub build: n keeps (1), o and y pass --reconstruire (0), no terminal keeps (1), absent builds directly. --- FR --- [IMP] create_exe.sh : demander avant d'écraser l'exécutable de la version Un exécutable déjà construit pour la version arrêtait la construction sur un refus, qu'on ne levait qu'en relançant avec --reconstruire. Le script demande désormais [o/N] : oui le reconstruit, toute autre réponse le garde et s'arrête. Sans terminal, la réponse est non : un script ou un tube n'écrase jamais un binaire par mégarde ; --reconstruire et GTT_OUI=1 sautent la question. Vérifié en terminal, construction remplacée par un témoin : n garde (1), o et y passent --reconstruire (0), sans terminal garde (1). Assisted-by: Claude Opus 5.5 --- create_exe.sh | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/create_exe.sh b/create_exe.sh index dada134..4af549e 100755 --- a/create_exe.sh +++ b/create_exe.sh @@ -7,17 +7,21 @@ # scripts/construire_windows.sh, le Node du projet en tête du PATH. Il sort # dans dist-electron/, nommé d'après version.json ; make windows passe ici. # -# ./create_exe.sh refuse si l'exécutable de la version existe -# ./create_exe.sh --reconstruire l'efface, puis le reconstruit +# ./create_exe.sh demande avant d'écraser l'exécutable de la version +# ./create_exe.sh --reconstruire l'écrase sans demander +# +# Sans terminal, la question reçoit « non » : l'exécutable existant reste, sauf +# sous --reconstruire ou GTT_OUI=1. set -euo pipefail cd -- "$(dirname -- "$0")" . scripts/installation/commun.sh +reconstruire=0 for argument in "$@"; do case "$argument" in - --reconstruire) ;; + --reconstruire) reconstruire=1 ;; -h | --help) - sed -n '5,11p' "$0" | sed 's/^# \{0,1\}//' + sed -n '5,14p' "$0" | sed 's/^# \{0,1\}//' exit 0 ;; *) @@ -30,4 +34,21 @@ done case "$(gtt_famille)" in windows | macos) gtt_refuser "l'exécutable Windows se construit sous Linux, en conteneur podman (§ 16)." ;; esac -exec scripts/installation/avec_node.sh scripts/construire_windows.sh "$@" + +# Un exécutable de cette version déjà construit : la question remplace le +# refus de scripts/construire_windows.sh, et « oui » lui passe --reconstruire. +# Le nom vient de deriver, appliqué à version.json, comme dans ce script. +if [ "$reconstruire" = 0 ]; then + nom="$(scripts/installation/avec_node.sh node -e " + const { deriver } = require('./scripts/version.js'); + console.log(deriver(require('./version.json').version).nomFichier); + ")" + if [ -e "dist-electron/$nom" ]; then + gtt_confirmer "dist-electron/$nom existe déjà. L'écraser ?" \ + || gtt_refuser "dist-electron/$nom reste. Un numéro ne désigne qu'un binaire (§ 18.2) : changer la version pour un exécutable qui a déjà quitté cette machine." + reconstruire=1 + fi +fi +options=() +[ "$reconstruire" = 1 ] && options+=(--reconstruire) +exec scripts/installation/avec_node.sh scripts/construire_windows.sh ${options[@]+"${options[@]}"}