525 lines
6.0 KiB
Markdown
525 lines
6.0 KiB
Markdown
# 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 **post‑installation 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 post‑installation 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 post‑installation 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.
|
||
|