param( [ValidateSet("bootstrap", "up", "redeploy", "proxy-reload", "down", "logs", "reset")] [string]$Action = "bootstrap", [string]$Distro = "" ) if (-not (Get-Command wsl.exe -ErrorAction SilentlyContinue)) { Write-Error "WSL wurde nicht gefunden. Bitte WSL installieren und konfigurieren." exit 1 } $repoWinPath = (Resolve-Path (Join-Path $PSScriptRoot "..")).Path $repoWslPath = (& wsl.exe wslpath -a "$repoWinPath").Trim() if (-not $repoWslPath) { Write-Error "Konnte den WSL Pfad fuer das Repo nicht ermitteln." exit 1 } switch ($Action) { "bootstrap" { $linuxCommand = "./scripts/bootstrap.sh" } "up" { $linuxCommand = "./scripts/compose.sh up -d --build" } "redeploy" { $linuxCommand = "./scripts/compose.sh up -d --build --remove-orphans && ./scripts/compose.sh restart reverse-proxy" } "proxy-reload" { $linuxCommand = "./scripts/compose.sh restart reverse-proxy" } "down" { $linuxCommand = "./scripts/compose.sh down" } "logs" { $linuxCommand = "./scripts/compose.sh logs -f" } "reset" { $linuxCommand = "./scripts/reset-lab.sh" } } $wslArgs = @() if ($Distro) { $wslArgs += "-d" $wslArgs += $Distro } $wslArgs += "-e" $wslArgs += "bash" $wslArgs += "-lc" $wslArgs += "cd '$repoWslPath' && $linuxCommand" Write-Host "[info] Running in WSL: $linuxCommand" & wsl.exe @wslArgs exit $LASTEXITCODE