117 lines
4.0 KiB
Markdown
117 lines
4.0 KiB
Markdown
# Plan de Migration vers $HOME/.config/citadel
|
|
|
|
## Objectif
|
|
Migrer la configuration du projet vers `$HOME/.config/citadel` pour respecter les standards de configuration système et séparer clairement le code de la configuration en production.
|
|
|
|
## Architecture Cible
|
|
|
|
### Structure de configuration
|
|
```
|
|
$HOME/.config/citadel/
|
|
├── backup.env # Configuration principale (était à la racine)
|
|
├── restic.conf # Configuration Restic générée (était dans config/)
|
|
└── services/ # Configurations spécifiques par service (futures extensions)
|
|
```
|
|
|
|
### Fichiers sample conservés dans le projet
|
|
```
|
|
backup.env.sample # Guide d'installation (reste à la racine)
|
|
config/restic.conf # Devient un exemple/template
|
|
```
|
|
|
|
## Plan d'action détaillé
|
|
|
|
### Phase 1 : Modification du système de sourcing
|
|
|
|
#### 1.1 Modifier `manage`
|
|
- **Fichier** : `manage` (lignes 12-18)
|
|
- **Action** : Remplacer le sourcing conditionnel par un chemin fixe
|
|
- **Nouveau code** :
|
|
```bash
|
|
CONFIG_DIR="$HOME/.config/citadel"
|
|
CONFIG_FILE="$CONFIG_DIR/backup.env"
|
|
|
|
if [ -f "$CONFIG_FILE" ]; then
|
|
source "$CONFIG_FILE"
|
|
else
|
|
echo "ERROR: Configuration not found at $CONFIG_FILE"
|
|
echo "Please run './install setup' to initialize configuration"
|
|
exit 1
|
|
fi
|
|
```
|
|
|
|
#### 1.2 Modifier `install`
|
|
- **Fichier** : `install` (lignes 12-18)
|
|
- **Action** : Même modification que `manage` + création du répertoire config
|
|
- **Ajout** : Fonction de création/migration de la configuration
|
|
- **Nouveau comportement** :
|
|
- Créer `$HOME/.config/citadel/` si inexistant
|
|
- Copier `backup.env.sample` vers `$HOME/.config/citadel/backup.env` si absent
|
|
- Générer `restic.conf` dans le nouveau répertoire
|
|
|
|
#### 1.3 Modifier `service-script-template.sh`
|
|
- **Fichier** : `backup/service-script-template.sh` (lignes 8-26)
|
|
- **Action** : Supprimer la détection automatique de PROJECT_ROOT
|
|
- **Nouveau code** :
|
|
```bash
|
|
CONFIG_DIR="$HOME/.config/citadel"
|
|
CONFIG_FILE="$CONFIG_DIR/backup.env"
|
|
|
|
if [ -f "$CONFIG_FILE" ]; then
|
|
source "$CONFIG_FILE"
|
|
else
|
|
echo "ERROR: Configuration not found at $CONFIG_FILE" >&2
|
|
exit 1
|
|
fi
|
|
```
|
|
|
|
### Phase 2 : Adaptation des variables de configuration
|
|
|
|
#### 2.1 Modifier `backup.env.sample`
|
|
- **Action** : Mettre à jour les chemins par défaut
|
|
- **Variables à modifier** :
|
|
```bash
|
|
# Nouveau chemin de configuration
|
|
RESTIC_CONFIG_FILE="${RESTIC_CONFIG_FILE:-$HOME/.config/citadel/restic.conf}"
|
|
|
|
# PROJECT_ROOT devient optionnel (pour les templates systemd seulement)
|
|
PROJECT_ROOT="${PROJECT_ROOT:-/home/nicolas/dev/citadel}"
|
|
```
|
|
|
|
#### 2.2 Modifier la génération de `restic.conf`
|
|
- **Fichier** : `install` (fonction `generate_config`)
|
|
- **Action** : Générer le fichier dans `$HOME/.config/citadel/restic.conf`
|
|
- **Chemin cible** : `$CONFIG_DIR/restic.conf`
|
|
|
|
### Phase 3 : Tests et validation
|
|
|
|
#### 3.1 Tests de non-régression
|
|
- `./manage list` fonctionne
|
|
- `./manage install <service>` fonctionne
|
|
- Scripts de backup sourcent correctement la configuration
|
|
- Installation initiale crée la structure correcte
|
|
|
|
### Phase 4 : Documentation
|
|
|
|
#### 4.1 Mettre à jour README.md
|
|
- Documenter le nouveau chemin de configuration
|
|
- Ajouter la procédure de setup initial
|
|
|
|
#### 4.2 Messages d'erreur informatifs
|
|
- Guider l'utilisateur vers la bonne commande d'installation
|
|
- Indiquer clairement les chemins de configuration
|
|
|
|
## Avantages de cette migration
|
|
|
|
1. **Standard système** : Respect de la convention `$HOME/.config/`
|
|
2. **Séparation claire** : Code et configuration indépendants
|
|
3. **Sécurité** : Configuration hors du répertoire de développement
|
|
4. **Simplicité** : Plus de détection automatique hasardeuse
|
|
5. **Maintenance** : Configuration centralisée et prévisible
|
|
|
|
## Risques identifiés et mitigations
|
|
|
|
- **Risque** : Scripts cassés après migration
|
|
- **Mitigation** : Tests de non-régression complets
|
|
- **Risque** : Confusion utilisateur
|
|
- **Mitigation** : Messages d'erreur explicites et documentation claire |