summaryrefslogtreecommitdiff
path: root/scripts/sync-from-project.ps1
diff options
context:
space:
mode:
authorertopogo <erwin.t.pombett@gmail.com>2025-11-26 19:52:23 +0100
committerertopogo <erwin.t.pombett@gmail.com>2025-11-26 19:52:23 +0100
commitb33ff5f1fa86a8989ef1be65fd636b0458c0e9d1 (patch)
tree8fe8eb9e67450e27c62a0903c8175cecf1f7c50a /scripts/sync-from-project.ps1
parent65c3cd080d112ad92aa6399c8c6c8090ccec90cb (diff)
Chore: Normalisation des fin de ligne (LF) via .gittattributsmain
Diffstat (limited to 'scripts/sync-from-project.ps1')
-rw-r--r--scripts/sync-from-project.ps1308
1 files changed, 154 insertions, 154 deletions
diff --git a/scripts/sync-from-project.ps1 b/scripts/sync-from-project.ps1
index 73ba1c5..7ad43a7 100644
--- a/scripts/sync-from-project.ps1
+++ b/scripts/sync-from-project.ps1
@@ -1,154 +1,154 @@
-# Script pour restaurer les fichiers de configuration depuis le projet
-# Lit path-mapping.json et copie chaque fichier vers son emplacement original
-
-param(
- [string]$MappingFile = "path-mapping.json"
-)
-
-$ErrorActionPreference = "Stop"
-
-# Vérifier que le fichier de mapping existe
-if (-not (Test-Path $MappingFile)) {
- Write-Error "Le fichier de mapping '$MappingFile' n'existe pas. Exécutez d'abord sync-to-project.ps1"
- exit 1
-}
-
-# Charger le mapping
-try {
- $mapping = Get-Content $MappingFile -Raw | ConvertFrom-Json
-} catch {
- Write-Error "Impossible de charger le fichier de mapping: $_"
- exit 1
-}
-
-$restoredCount = 0
-$skippedCount = 0
-$errorCount = 0
-
-# Fonction pour résoudre un chemin Windows
-function Resolve-WindowsPath {
- param([string]$path)
-
- # Remplacer les variables d'environnement
- $resolved = $path
- $resolved = $resolved -replace '%USERPROFILE%', $env:USERPROFILE
- $resolved = $resolved -replace '%APPDATA%', $env:APPDATA
- $resolved = $resolved -replace '%LOCALAPPDATA%', $env:LOCALAPPDATA
- $resolved = $resolved -replace '%HOME%', $env:HOME
-
- # Remplacer les autres variables d'environnement
- $resolved = [System.Environment]::ExpandEnvironmentVariables($resolved)
-
- return $resolved
-}
-
-# Fonction pour résoudre un chemin WSL vers un chemin Windows accessible
-function Resolve-WSLPath {
- param([string]$path)
-
- # Détecter la distribution WSL (par défaut Ubuntu)
- $wslDistro = "Ubuntu"
-
- # Expansion de ~ vers /home/toshiro (ou autre utilisateur)
- if ($path -match '^~') {
- $homePath = wsl bash -c "echo ~" 2>$null
- if ($LASTEXITCODE -eq 0 -and $homePath) {
- $path = $path -replace '^~', $homePath
- } else {
- # Fallback: utiliser toshiro
- $path = $path -replace '^~', "/home/toshiro"
- }
- }
-
- # Convertir le chemin WSL en chemin Windows accessible
- # Format: /home/toshiro/.bashrc -> \\wsl.localhost\Ubuntu\home\toshiro\.bashrc
- if ($path -match '^/') {
- # Enlever le slash initial
- $relativePath = $path.Substring(1)
- # Convertir en chemin Windows
- $windowsPath = "\\wsl.localhost\$wslDistro\$relativePath" -replace '/', '\'
- return $windowsPath
- }
-
- return $path
-}
-
-# Traiter les fichiers Windows
-if ($mapping.windows) {
- $mapping.windows.PSObject.Properties | ForEach-Object {
- $originalPath = $_.Name
- $projectPath = $_.Value
-
- try {
- # Vérifier que le fichier source existe dans le projet
- if (-not (Test-Path $projectPath)) {
- Write-Warning "Fichier source introuvable dans le projet: $projectPath"
- $skippedCount++
- return
- }
-
- # Résoudre le chemin de destination
- $destinationPath = Resolve-WindowsPath $originalPath
-
- # Créer le répertoire parent si nécessaire
- $destinationDir = Split-Path $destinationPath -Parent
- if ($destinationDir -and -not (Test-Path $destinationDir)) {
- New-Item -ItemType Directory -Path $destinationDir -Force | Out-Null
- Write-Host "Créé le répertoire: $destinationDir"
- }
-
- # Copier le fichier
- Copy-Item -Path $projectPath -Destination $destinationPath -Force
-
- Write-Host "Restauré: $projectPath -> $destinationPath"
- $restoredCount++
-
- } catch {
- Write-Error "Erreur lors de la restauration de '$originalPath': $_"
- $errorCount++
- }
- }
-}
-
-# Traiter les fichiers WSL
-if ($mapping.wsl) {
- $mapping.wsl.PSObject.Properties | ForEach-Object {
- $originalPath = $_.Name
- $projectPath = $_.Value
-
- try {
- # Vérifier que le fichier source existe dans le projet
- if (-not (Test-Path $projectPath)) {
- Write-Warning "Fichier source introuvable dans le projet: $projectPath"
- $skippedCount++
- return
- }
-
- # Résoudre le chemin de destination WSL en chemin Windows accessible
- $destinationPath = Resolve-WSLPath $originalPath
-
- # Créer le répertoire parent si nécessaire
- $destinationDir = Split-Path $destinationPath -Parent
- if ($destinationDir -and -not (Test-Path $destinationDir)) {
- New-Item -ItemType Directory -Path $destinationDir -Force | Out-Null
- Write-Host "Créé le répertoire: $destinationDir"
- }
-
- # Copier le fichier directement (maintenant que le chemin WSL est converti en chemin Windows)
- Copy-Item -Path $projectPath -Destination $destinationPath -Force
-
- Write-Host "Restauré (WSL): $projectPath -> $destinationPath"
- $restoredCount++
-
- } catch {
- Write-Error "Erreur lors de la restauration WSL de '$originalPath': $_"
- $errorCount++
- }
- }
-}
-
-Write-Host "`nRésumé:"
-Write-Host " Fichiers restaurés: $restoredCount"
-Write-Host " Fichiers ignorés: $skippedCount"
-Write-Host " Erreurs: $errorCount"
-
+# Script pour restaurer les fichiers de configuration depuis le projet
+# Lit path-mapping.json et copie chaque fichier vers son emplacement original
+
+param(
+ [string]$MappingFile = "path-mapping.json"
+)
+
+$ErrorActionPreference = "Stop"
+
+# Vérifier que le fichier de mapping existe
+if (-not (Test-Path $MappingFile)) {
+ Write-Error "Le fichier de mapping '$MappingFile' n'existe pas. Exécutez d'abord sync-to-project.ps1"
+ exit 1
+}
+
+# Charger le mapping
+try {
+ $mapping = Get-Content $MappingFile -Raw | ConvertFrom-Json
+} catch {
+ Write-Error "Impossible de charger le fichier de mapping: $_"
+ exit 1
+}
+
+$restoredCount = 0
+$skippedCount = 0
+$errorCount = 0
+
+# Fonction pour résoudre un chemin Windows
+function Resolve-WindowsPath {
+ param([string]$path)
+
+ # Remplacer les variables d'environnement
+ $resolved = $path
+ $resolved = $resolved -replace '%USERPROFILE%', $env:USERPROFILE
+ $resolved = $resolved -replace '%APPDATA%', $env:APPDATA
+ $resolved = $resolved -replace '%LOCALAPPDATA%', $env:LOCALAPPDATA
+ $resolved = $resolved -replace '%HOME%', $env:HOME
+
+ # Remplacer les autres variables d'environnement
+ $resolved = [System.Environment]::ExpandEnvironmentVariables($resolved)
+
+ return $resolved
+}
+
+# Fonction pour résoudre un chemin WSL vers un chemin Windows accessible
+function Resolve-WSLPath {
+ param([string]$path)
+
+ # Détecter la distribution WSL (par défaut Ubuntu)
+ $wslDistro = "Ubuntu"
+
+ # Expansion de ~ vers /home/toshiro (ou autre utilisateur)
+ if ($path -match '^~') {
+ $homePath = wsl bash -c "echo ~" 2>$null
+ if ($LASTEXITCODE -eq 0 -and $homePath) {
+ $path = $path -replace '^~', $homePath
+ } else {
+ # Fallback: utiliser toshiro
+ $path = $path -replace '^~', "/home/toshiro"
+ }
+ }
+
+ # Convertir le chemin WSL en chemin Windows accessible
+ # Format: /home/toshiro/.bashrc -> \\wsl.localhost\Ubuntu\home\toshiro\.bashrc
+ if ($path -match '^/') {
+ # Enlever le slash initial
+ $relativePath = $path.Substring(1)
+ # Convertir en chemin Windows
+ $windowsPath = "\\wsl.localhost\$wslDistro\$relativePath" -replace '/', '\'
+ return $windowsPath
+ }
+
+ return $path
+}
+
+# Traiter les fichiers Windows
+if ($mapping.windows) {
+ $mapping.windows.PSObject.Properties | ForEach-Object {
+ $originalPath = $_.Name
+ $projectPath = $_.Value
+
+ try {
+ # Vérifier que le fichier source existe dans le projet
+ if (-not (Test-Path $projectPath)) {
+ Write-Warning "Fichier source introuvable dans le projet: $projectPath"
+ $skippedCount++
+ return
+ }
+
+ # Résoudre le chemin de destination
+ $destinationPath = Resolve-WindowsPath $originalPath
+
+ # Créer le répertoire parent si nécessaire
+ $destinationDir = Split-Path $destinationPath -Parent
+ if ($destinationDir -and -not (Test-Path $destinationDir)) {
+ New-Item -ItemType Directory -Path $destinationDir -Force | Out-Null
+ Write-Host "Créé le répertoire: $destinationDir"
+ }
+
+ # Copier le fichier
+ Copy-Item -Path $projectPath -Destination $destinationPath -Force
+
+ Write-Host "Restauré: $projectPath -> $destinationPath"
+ $restoredCount++
+
+ } catch {
+ Write-Error "Erreur lors de la restauration de '$originalPath': $_"
+ $errorCount++
+ }
+ }
+}
+
+# Traiter les fichiers WSL
+if ($mapping.wsl) {
+ $mapping.wsl.PSObject.Properties | ForEach-Object {
+ $originalPath = $_.Name
+ $projectPath = $_.Value
+
+ try {
+ # Vérifier que le fichier source existe dans le projet
+ if (-not (Test-Path $projectPath)) {
+ Write-Warning "Fichier source introuvable dans le projet: $projectPath"
+ $skippedCount++
+ return
+ }
+
+ # Résoudre le chemin de destination WSL en chemin Windows accessible
+ $destinationPath = Resolve-WSLPath $originalPath
+
+ # Créer le répertoire parent si nécessaire
+ $destinationDir = Split-Path $destinationPath -Parent
+ if ($destinationDir -and -not (Test-Path $destinationDir)) {
+ New-Item -ItemType Directory -Path $destinationDir -Force | Out-Null
+ Write-Host "Créé le répertoire: $destinationDir"
+ }
+
+ # Copier le fichier directement (maintenant que le chemin WSL est converti en chemin Windows)
+ Copy-Item -Path $projectPath -Destination $destinationPath -Force
+
+ Write-Host "Restauré (WSL): $projectPath -> $destinationPath"
+ $restoredCount++
+
+ } catch {
+ Write-Error "Erreur lors de la restauration WSL de '$originalPath': $_"
+ $errorCount++
+ }
+ }
+}
+
+Write-Host "`nRésumé:"
+Write-Host " Fichiers restaurés: $restoredCount"
+Write-Host " Fichiers ignorés: $skippedCount"
+Write-Host " Erreurs: $errorCount"
+