# Projet : Synchronisation de fichiers de configuration ## Objectif Ce projet permet de centraliser et synchroniser tous les fichiers de configuration (vim, bash, screen, cursor, documentation, etc.) depuis Windows et WSL vers un dépôt git sur chillka. ## Structure du projet ``` config-files-keyvault/ ├── .git/ # Dépôt git local ├── configs/ │ ├── windows/ # Fichiers provenant de Windows │ └── wsl/ # Fichiers provenant de WSL ├── scripts/ │ ├── sync-to-project.ps1 # Script pour copier fichiers vers le projet │ └── sync-from-project.ps1 # Script pour restaurer fichiers depuis le projet ├── files-config.txt # Liste des fichiers à synchroniser ├── path-mapping.json # Mapping chemins originaux <-> chemins dans le projet └── PROJECT.md # Documentation du projet ``` ## Utilisation ### 1. Ajouter des fichiers à synchroniser Éditer le fichier `files-config.txt` et ajouter les fichiers au format : ``` windows|%USERPROFILE%\.vimrc wsl|~/.bashrc ``` ### 2. Copier les fichiers vers le projet Exécuter le script PowerShell : ```powershell .\scripts\sync-to-project.ps1 ``` Ce script va : - Lire `files-config.txt` - Copier chaque fichier vers `configs/{system}/` - Créer/mettre à jour `path-mapping.json` avec les chemins originaux ### 3. Restaurer les fichiers depuis le projet Exécuter le script PowerShell : ```powershell .\scripts\sync-from-project.ps1 ``` Ce script va : - Lire `path-mapping.json` - Copier chaque fichier depuis `configs/{system}/` vers son emplacement original - Créer les répertoires parents si nécessaire ### 4. Synchronisation Git Le dépôt git est configuré avec le remote : ``` toshiro@chillka:/var/data/git/repositories/config-files-keyvault.git ``` Pour synchroniser : ```powershell git add . git commit -m "Mise à jour des fichiers de configuration" git push origin main ``` ## Format de fichiers-config.txt Chaque ligne doit suivre le format : ``` {système}|{chemin} ``` Où : - `{système}` : `windows` ou `wsl` - `{chemin}` : Chemin du fichier avec support des variables d'environnement Windows (`%VAR%`) ou expansion WSL (`~`) Exemples : ``` windows|%USERPROFILE%\.vimrc windows|%APPDATA%\Cursor\User\settings.json wsl|~/.bashrc wsl|~/.bash_aliases wsl|~/.screenrc ``` ## Format de path-mapping.json Ce fichier est généré automatiquement par le script `sync-to-project.ps1`. Il contient le mapping entre les chemins originaux et les chemins dans le projet : ```json { "windows": { "%USERPROFILE%\\.vimrc": "configs/windows/.vimrc" }, "wsl": { "~/.bashrc": "configs/wsl/.bashrc" } } ``` ## Notes - Les fichiers sont organisés par système d'origine (windows/wsl) pour faciliter la gestion - Le mapping des chemins permet de restaurer les fichiers à leur emplacement exact - Les répertoires parents sont créés automatiquement lors de la restauration - Les fichiers WSL sont accessibles via le chemin Windows `\\wsl.localhost\Ubuntu\` pour une meilleure performance et fiabilité