[REF] todo shell : une table unique pour les installateurs amont
Les mêmes outils se posent à DEUX endroits : sur l'hôte par le menu Shell, et bientôt dans une VM par le déploiement QEMU. Une URL amont recopiée dérive dès que l'une des deux copies change, et c'est la seconde qu'on oublie — celle qui n'a pas de menu pour la montrer. Les noms de classe restent : ils sont l'interface, et les tests les interrogent. Aucun comportement ne change. --- EN --- The same tools are installed in TWO places: on the host from the Shell menu, and soon inside a VM from the QEMU deployment. A copied upstream URL drifts as soon as one of the two copies changes, and the forgotten one is the second — the one with no menu to show it. The class names stay: they are the interface, and the tests read them. No behaviour changes. Assisted-by: Claude Opus 5
This commit is contained in:
parent
43446c4ba9
commit
988ea6bcd5
2 changed files with 63 additions and 27 deletions
56
script/todo/dev_tools.py
Normal file
56
script/todo/dev_tools.py
Normal file
|
|
@ -0,0 +1,56 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
# © 2026 TechnoLibre (http://www.technolibre.ca)
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
||||||
|
"""Installateurs amont des outils de développement.
|
||||||
|
|
||||||
|
Les mêmes outils se posent à DEUX endroits : sur l'hôte par le menu Shell,
|
||||||
|
et dans une VM par le déploiement QEMU. Une seule table les décrit, parce
|
||||||
|
que deux copies d'une URL dérivent dès que l'amont en change une, et que la
|
||||||
|
seconde copie est celle qu'on oublie.
|
||||||
|
|
||||||
|
Chacun est un installateur amont plutôt qu'un paquet : aucun n'est présent
|
||||||
|
dans les dépôts des quatre familles que supporte ERPLibre, et celui qui l'est
|
||||||
|
y traîne d'une version.
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Proxy CLI qui réduit la consommation de tokens des assistants.
|
||||||
|
RTK_UPSTREAM = (
|
||||||
|
"curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/"
|
||||||
|
"refs/heads/master/install.sh | sh"
|
||||||
|
)
|
||||||
|
|
||||||
|
# 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"
|
||||||
|
|
||||||
|
# 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"
|
||||||
|
|
||||||
|
# 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
|
||||||
|
# touche.
|
||||||
|
STARSHIP_LINE = {
|
||||||
|
"bash": 'eval "$(starship init bash)"',
|
||||||
|
"zsh": 'eval "$(starship init zsh)"',
|
||||||
|
"fish": "starship init fish | source",
|
||||||
|
}
|
||||||
|
|
||||||
|
# Les assistants posés par un installateur amont : le nom du binaire mène
|
||||||
|
# à (commande, répertoire d'installation). Le répertoire sert à garantir
|
||||||
|
# le PATH — un binaire posé hors des chemins du shell reste introuvable.
|
||||||
|
AGENTS = {
|
||||||
|
"claude": (
|
||||||
|
"curl -fsSL https://claude.ai/install.sh | bash",
|
||||||
|
"~/.local/bin",
|
||||||
|
),
|
||||||
|
"opencode": (
|
||||||
|
"curl -fsSL https://opencode.ai/install | bash",
|
||||||
|
"~/.opencode/bin",
|
||||||
|
),
|
||||||
|
}
|
||||||
|
|
||||||
|
# L'agent posé quand rien n'est choisi. Le premier de la table ferait
|
||||||
|
# dépendre le défaut de l'ordre d'écriture d'un dictionnaire.
|
||||||
|
AGENT_DEFAUT = "claude"
|
||||||
|
|
@ -26,7 +26,7 @@ sys.path.append(new_path)
|
||||||
|
|
||||||
from script.config import config_file
|
from script.config import config_file
|
||||||
from script.execute import execute
|
from script.execute import execute
|
||||||
from script.todo import todo_install, todo_prefs
|
from script.todo import dev_tools, todo_install, todo_prefs
|
||||||
from script.todo.database_manager import DatabaseManager
|
from script.todo.database_manager import DatabaseManager
|
||||||
from script.todo.kdbx_manager import KdbxManager
|
from script.todo.kdbx_manager import KdbxManager
|
||||||
from script.todo.longtest_menu import LongTestMenuMixin
|
from script.todo.longtest_menu import LongTestMenuMixin
|
||||||
|
|
@ -2711,32 +2711,12 @@ class TODO(
|
||||||
"fish": "~/.config/fish/config.fish",
|
"fish": "~/.config/fish/config.fish",
|
||||||
}
|
}
|
||||||
|
|
||||||
# Ce que chaque shell écrit pour lancer starship. La ligne va en FIN de
|
# Ces quatre tables vivent dans dev_tools : le déploiement QEMU pose les
|
||||||
# fichier : starship compose le prompt et doit passer après tout ce qui y
|
# mêmes outils DANS une VM, et deux copies d'une URL amont dérivent dès
|
||||||
# touche.
|
# que l'une change. Les noms de classe restent, ils sont l'interface.
|
||||||
_STARSHIP_LINE = {
|
_STARSHIP_LINE = dev_tools.STARSHIP_LINE
|
||||||
"bash": 'eval "$(starship init bash)"',
|
_STARSHIP_UPSTREAM = dev_tools.STARSHIP_UPSTREAM
|
||||||
"zsh": 'eval "$(starship init zsh)"',
|
_UPSTREAM_TOOLS = dev_tools.AGENTS
|
||||||
"fish": "starship init fish | source",
|
|
||||||
}
|
|
||||||
|
|
||||||
# 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_UPSTREAM = "curl -sS https://starship.rs/install/install.sh | sh"
|
|
||||||
|
|
||||||
# Les assistants posés par un installateur amont : le nom du binaire mène
|
|
||||||
# à (commande, répertoire d'installation). Le répertoire sert à garantir
|
|
||||||
# le PATH — un binaire posé hors des chemins du shell reste introuvable.
|
|
||||||
_UPSTREAM_TOOLS = {
|
|
||||||
"claude": (
|
|
||||||
"curl -fsSL https://claude.ai/install.sh | bash",
|
|
||||||
"~/.local/bin",
|
|
||||||
),
|
|
||||||
"opencode": (
|
|
||||||
"curl -fsSL https://opencode.ai/install | bash",
|
|
||||||
"~/.opencode/bin",
|
|
||||||
),
|
|
||||||
}
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _shell_name():
|
def _shell_name():
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue