first
This commit is contained in:
524
consigne.md
Normal file
524
consigne.md
Normal 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 **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.
|
||||
|
||||
Reference in New Issue
Block a user