From 6c1d985686602bf36df43d99386ad9ca3d69f8c4 Mon Sep 17 00:00:00 2001 From: Mathieu Benoit Date: Fri, 4 Sep 2026 00:38:29 -0400 Subject: [PATCH] =?UTF-8?q?[FIX]=20script=20todo=20:=20starship,=20URL=20c?= =?UTF-8?q?orrig=C3=A9e,=20curl=20qui=20refuse=20le=20HTML?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit L'URL amont de starship pointait sur un chemin qui n'existe pas : le serveur rend 404 avec une page HTML de 34 ko, que « curl -sS » écrit tout de même sur sa sortie en rendant 0. Cette page arrivait donc sur l'entrée de « sh », qui s'arrêtait sur « Syntax error » à sa deuxième ligne — un diagnostic qui ne dit ni l'URL fautive ni que rien n'a été posé. « -f » fait taire curl et rendre 22 sur toute réponse d'erreur ; les quatre autres installateurs amont du fichier l'utilisaient déjà. Vérifié : le « --help » de l'installateur est atteint, sans rien installer. --- EN --- The upstream starship URL pointed at a path that does not exist: the server answers 404 with a 34 kB HTML page, which `curl -sS` writes to its output anyway while exiting 0. That page reached the input of `sh`, which stopped on `Syntax error` at its second line — a diagnosis naming neither the wrong URL nor the fact that nothing was installed. `-f` makes curl write nothing and return 22 on any error response; the four other upstream installers in the file already used it. Checked: the installer's `--help` is reached, with nothing installed. Assisted-by: Claude Opus 5 --- script/todo/dev_tools.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/script/todo/dev_tools.py b/script/todo/dev_tools.py index 8d12450..7402899 100644 --- a/script/todo/dev_tools.py +++ b/script/todo/dev_tools.py @@ -21,12 +21,20 @@ RTK_UPSTREAM = ( # L'installateur amont pose un binaire statique. Il sert de recours parce # que le paquet manque d'une partie des dépôts des plateformes supportées. -STARSHIP_URL = "https://starship.rs/install/install.sh" -STARSHIP_UPSTREAM = f"curl -sS {STARSHIP_URL} | sh" +STARSHIP_URL = "https://starship.rs/install.sh" + +# « -f » n'est pas un ornement quand la sortie part dans un shell : sans lui, +# curl écrit le CORPS d'une réponse d'erreur et sort avec 0, si bien qu'une +# page HTML de 34 ko arrive sur l'entrée de « sh » et s'y interprète comme +# un script. Le diagnostic obtenu est alors « Syntax error » sur une ligne du +# HTML, qui ne dit ni que l'URL est fautive ni que rien n'a été installé. +# Avec « -f », curl n'écrit rien et rend 22. « -L » suit une redirection, +# qu'un projet amont pose sans prévenir. +STARSHIP_UPSTREAM = f"curl -fsSL {STARSHIP_URL} | sh" # Sans terminal — une pose par SSH dans une VM — l'installateur demande une # confirmation que personne ne donnera. « -y » la donne d'avance. -STARSHIP_UPSTREAM_YES = f"curl -sS {STARSHIP_URL} | sh -s -- -y" +STARSHIP_UPSTREAM_YES = f"curl -fsSL {STARSHIP_URL} | sh -s -- -y" # Ce que chaque shell écrit pour lancer starship. La ligne va en FIN de # fichier : starship compose le prompt et doit passer après tout ce qui y