<# .SYNOPSIS Exécute le script deploy-img.sh dans WSL Debian. .DESCRIPTION Ce script PowerShell lance le script Bash deploy-img.sh dans le répertoire courant sous la distribution WSL Debian. Le script déploie l'image Docker locale vers le registre distant et gère les versions. .PARAMETRES Aucun paramètre requis actuellement. .EXEMPLE .\deploy-img.ps1 .RETOURNE Affiche le succès ou les erreurs lors du déploiement de l'image Docker. #> param() $ErrorActionPreference = 'Stop' try { Write-Verbose "[Étape 1] Détermination du répertoire du script." $scriptDir = $PSScriptRoot Write-Verbose "[Étape 2] Conversion du chemin Windows vers WSL (manuel, sans wslpath)." # Remplacement manuel du préfixe du chemin Windows par le préfixe WSL $wslScriptDir = $scriptDir -replace '^([A-Za-z]):\\', '/mnt/$1/' -replace '\\','/' $wslScriptDir = $wslScriptDir.ToLower() Write-Verbose "[Étape 3] Vérification des permissions du script bash." wsl -d Debian -- chmod +x "$wslScriptDir/deploy-img.sh" Write-Verbose "[Étape 4] Construction de la commande Bash à exécuter." # WSL n'hérite PAS des variables d'environnement de Windows : on les # exporte explicitement dans la commande bash. Sans cela, un DOCKER_USERNAME # défini dans PowerShell n'arriverait jamais dans deploy-img.sh et le push # échouerait en "push access denied". $innerCmd = "cd '$wslScriptDir' && ./deploy-img.sh" foreach ($var in @('DOCKER_USERNAME', 'DOCKER_PASSWORD')) { $value = [Environment]::GetEnvironmentVariable($var) if ($value) { # Échappement des caractères spéciaux bash (simple quotes) $escaped = $value -replace "'", "'\''" $innerCmd = "export $var='$escaped'; " + $innerCmd } } Write-Verbose "[Étape 5] Exécution du script deploy-img.sh dans WSL Debian." wsl -d Debian bash -lc $innerCmd if ($LASTEXITCODE -ne 0) { throw "Le script de déploiement a échoué avec le code d'erreur: $LASTEXITCODE" } Write-Host "Déploiement de l'image Docker newtube-angular:latest terminé avec succès." -ForegroundColor Green } catch { Write-Error "Erreur lors de l'exécution du déploiement de l'image Docker : $_" exit 1 }