# AGENTS.md ## But du depot Ce projet construit un framework de post-installation pour Debian 13, lance via : ```bash curl -fsSL https://gitea.maison43.duckdns.org/gilles/postinstall-debian/raw/branch/main/install.sh | bash ``` L'objectif est de proposer une base modulaire, testable et evolutive pour installer et configurer un systeme Debian apres installation. ## Regles de travail - ecrire les commentaires et les explication en francais - Toujours privilegier une architecture modulaire. - Chaque outil doit vivre dans son propre module. - Ne pas melanger logique framework, logique UI et logique d'installation d'un outil. - Eviter les actions destructives ou silencieuses sur le systeme. - Garder le code compatible avec Debian 13 et un shell Bash standard. - Favoriser du code lisible, structure et compose de fonctions courtes. ## Structure cible Le depot doit converger vers cette structure : ```text install.sh README.md consigne.md tools.md CHANGELOG.md AGENTS.md assets/ config/ core/ docs/ hardware/ lib/ menus/ modules/ profiles/ tests/ ``` ## Responsabilites par zone - `install.sh` : point d'entree compatible `curl | bash`. - `core/` : bootstrap, runtime, registre des modules, dispatch. - `lib/` : fonctions reutilisables UI, logs, validations, paquets, systeme, reseau. - `menus/` : menus interactifs. - `modules/` : outils installables, un dossier par outil. - `profiles/` : groupes de modules predefinis. - `hardware/` : selections liees au materiel. - `assets/` : themes, polices, wallpapers, icones et ressources visuelles. - `tests/` : tests framework et tests de modules. - `docs/` : documentation de conception et d'usage. ## Contrat d'un module Chaque module doit idealement contenir : ```text modules/// module.sh config.sh metadata.conf tests.sh ``` Fonctions attendues quand elles sont pertinentes : - `module__metadata` - `module__check` - `module__install` - `module__configure` - `module__test` ## Standards Bash - Utiliser `set -u` et une gestion d'erreurs explicite lorsque l'architecture sera en place. - Citer correctement les variables. - Preferer `command -v` pour verifier les dependances. - Centraliser les logs, messages UI et validations dans `lib/`. - Garder les effets de bord dans des fonctions nommees clairement. - Prevoir ShellCheck des que les scripts existent. ## Experience utilisateur Le framework doit fournir : - une interface console claire - des messages colores et coherents - des etapes visibles - des confirmations quand une action est sensible - un resume final des operations Fonctions UI a prevoir : - `ui_header` - `ui_section` - `ui_info` - `ui_success` - `ui_warn` - `ui_error` - `ui_menu` - `ui_confirm` - `ui_pause` ## Securite - Verifier la distribution et les privileges avant toute installation. - Verifier le reseau si une action distante est necessaire. - Ne pas modifier silencieusement des fichiers critiques. - Preferer des changements explicites, journalises et reversibles quand possible. ## Methode pour ajouter un outil Avant implementation, passer par : 1. Brainstorming de l'outil. 2. Decision d'architecture. 3. Implementation du module. 4. Integration menu, profil ou materiel si necessaire. 5. Tests. 6. Documentation. Les informations minimales d'un outil dans `tools.md` sont : - nom - description - categorie - questions - methode d'installation - tests - statut ## Priorite immediate Avant d'ajouter des outils, construire l'ossature du framework : - point d'entree `install.sh` - dossiers standards - bibliotheques de base - mecanisme de chargement - premiers menus - documentation de demarrage