This commit is contained in:
2026-03-15 04:54:51 +01:00
parent 0fb8fe5a66
commit 7ac487f640
81 changed files with 3867 additions and 0 deletions

524
consigne.md Normal file
View File

@@ -0,0 +1,524 @@
# CONSIGNE.md
## Objectif du projet
Créer un dépôt Git hébergé sur Gitea :
https://gitea.maison43.duckdns.org/gilles/postinstall-debian
Ce dépôt doit permettre l'exécution d'un script **postinstallation Debian 13** via une commande simple :
```bash
curl -fsSL https://gitea.maison43.duckdns.org/gilles/postinstall-debian/raw/branch/main/install.sh | bash
```
Le script doit permettre :
- d'installer automatiquement des outils
- de configurer le système
- de proposer des menus interactifs
- d'être évolutif et modulaire
- d'intégrer facilement de nouveaux outils
- d'offrir une interface console claire et agréable
Le projet doit être pensé comme un **framework de postinstallation Debian 13**.
---
# Principes généraux
## Modularité
Chaque outil doit être installé via un **module indépendant**.
Un module correspond à :
- un script d'installation
- un script de configuration
- des métadonnées
- des tests éventuels
Chaque module doit pouvoir être :
- installé indépendamment
- intégré dans un menu
- utilisé dans un profil
- testé isolément
---
# Structure du dépôt
Structure recommandée :
```text
postinstall-debian/
install.sh
README.md
CONSIGNE.md
tools.md
CHANGELOG.md
assets/
config/
core/
lib/
menus/
modules/
profiles/
hardware/
tests/
docs/
```
---
# Organisation détaillée
## install.sh
Script principal.
Fonctions :
- vérification environnement
- vérification Debian
- gestion sudo/root
- chargement librairies
- chargement thème console
- affichage menu principal
Doit fonctionner via **curl | bash**.
---
# Dossier core/
Scripts internes du framework.
Exemples :
- bootstrap.sh
- runtime.sh
- registry.sh
- dispatcher.sh
Rôle :
- gestion des modules
- gestion de l'environnement
- découverte des outils
---
# Dossier lib/
Fonctions réutilisables.
Exemples :
ui.sh
log.sh
package.sh
system.sh
network.sh
prompts.sh
validation.sh
---
# Dossier menus/
Gestion des menus interactifs.
Menus possibles :
Menu principal
Installation par catégorie
Installation par profil
Installation par matériel
Configuration système
Tests
---
# Dossier modules/
Chaque outil possède un dossier dédié.
Exemple :
```
modules/dev/git/
module.sh
config.sh
metadata.conf
tests.sh
```
Fonctions attendues :
module_git_metadata
module_git_check
module_git_install
module_git_configure
module_git_test
---
# Catégories d'outils
Les outils doivent être classés.
Exemples :
system
network
dev
gnome
desktop
multimedia
containers
virtualization
security
monitoring
backup
shell
productivity
communication
selfhosted
hardware
---
# Profils
Les profils installent plusieurs outils.
Exemples :
Desktop minimal
Développeur
Homelab
Laptop
VM de test
Un profil contient une **liste de modules**.
---
# Installation par matériel
Possibilité d'installer un ensemble d'outils selon le matériel.
Exemples :
Laptop ASUS
HP EliteDesk
VM Debian
Poste GNOME
---
# Interface utilisateur
Le script doit être user friendly.
Prévoir :
couleurs
messages clairs
étapes visibles
résumé final
Fonctions UI :
ui_header
ui_section
ui_info
ui_success
ui_warn
ui_error
ui_menu
ui_confirm
ui_pause
---
# Journalisation
Créer un système de logs.
Objectifs :
- log installation
- log erreurs
- log tests
---
# Sécurité curl | bash
Le script doit :
- vérifier Debian
- vérifier réseau
- vérifier droits
Éviter :
- suppression brutale
- modification silencieuse fichiers critiques
---
# Gestion des erreurs
Prévoir :
- arrêt propre
- messages clairs
- gestion codes retour
---
# Qualité Bash
Le code doit :
- être lisible
- être structuré
- utiliser des fonctions
Utiliser si possible :
shellcheck
---
# tools.md
Ce fichier liste les outils demandés.
Pour chaque outil :
nom
description
catégorie
questions
méthode installation
tests
statut
---
# Brainstorming avant ajout d'un outil
Questions obligatoires :
Quel est l'outil
Quel usage
Installation via apt ?
Dépendances
Configuration
Service systemd
Interface graphique
Compatibilité Debian 13
Tests possibles
Menu cible
Profil cible
---
# Tests
Types de tests possibles :
- présence binaire
- version
- service actif
- port ouvert
Tests VM Debian 13 recommandés.
---
# Intégration d'un outil
Cycle :
1 Brainstorming
2 Décision architecture
3 Implémentation module
4 Intégration menu
5 Tests
6 Documentation
---
# Gestion des thèmes et ressources visuelles
Le projet doit permettre d'intégrer des **ressources graphiques et thèmes**.
Exemples :
- thèmes GRUB
- thèmes GNOME
- thèmes GTK
- packs d'icônes
- curseurs
- wallpapers
- polices
- thèmes terminal
Ces ressources doivent être stockées dans **assets/**.
Structure possible :
```text
assets/
assets/grub/
assets/gnome/
assets/icons/
assets/cursors/
assets/fonts/
assets/wallpapers/
assets/terminal/
```
Chaque thème doit idéalement posséder :
metadata.conf
Exemple :
THEME_ID
THEME_NAME
THEME_TYPE
THEME_TARGET
THEME_DESCRIPTION
THEME_DEPENDENCIES
---
# Menus de personnalisation
Ajouter un menu :
Personnalisation
Sous menus :
Thèmes GRUB
Thèmes GNOME
Icônes
Curseurs
Wallpapers
Fonts
Terminal
---
# Bonnes pratiques pour GRUB
Toujours :
sauvegarder config
régénérer grub
avertir utilisateur
---
# GNOME
Distinguer :
GTK
Shell
Icônes
Curseurs
---
# Métadonnées modules
Chaque module peut définir :
TOOL_NAME
TOOL_ID
TOOL_CATEGORY
TOOL_DESCRIPTION
TOOL_DEPENDENCIES
TOOL_SUPPORTED_ON
TOOL_TEST_AVAILABLE
---
# Documentation
Créer documentation :
architecture.md
add_tool_workflow.md
menu_strategy.md
testing_strategy.md
security_notes.md
---
# README
Le README doit contenir :
objectif
installation
structure dépôt
ajout outils
---
# Priorités du projet
1 Clarté
2 Stabilité
3 Modularité
4 Testabilité
5 Évolutivité
6 UX terminal
---
# Conclusion
Ce dépôt doit devenir une **plateforme de postinstallation Debian 13 modulaire** permettant :
- installation d'outils
- configuration système
- personnalisation
- évolution continue
Le projet doit rester lisible, modulaire et maintenable sur le long terme.