Files
postinstall-debian/consigne.md
2026-03-15 04:54:51 +01:00

525 lines
6.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.