62 lines
2.1 KiB
PowerShell
Executable File
62 lines
2.1 KiB
PowerShell
Executable File
#!/usr/bin/env pwsh
|
|
param(
|
|
[ValidateSet("update", "register", "start", "stop", "status")]
|
|
[string]$Action = "start",
|
|
[string]$Distro = $(if ($env:WAKEY_WSL_DISTRO) { $env:WAKEY_WSL_DISTRO } else { "FedoraLinux-43" }),
|
|
[string]$RunnerHome,
|
|
[string]$RunnerBin = "/home/lda/gitea-runner/act_runner",
|
|
[string]$ConfigPath,
|
|
[string]$ServerUrl,
|
|
[string]$Token,
|
|
[string]$Labels = "self-hosted,linux,fedora,wsl,release:host",
|
|
[switch]$Attach,
|
|
[switch]$Once
|
|
)
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
. "$PSScriptRoot/lib.ps1"
|
|
|
|
$scriptWin = Join-Path $PSScriptRoot "act_runner_fedora.sh"
|
|
if (-not (Test-Path $scriptWin)) {
|
|
throw "Missing Fedora runner helper: $scriptWin"
|
|
}
|
|
|
|
$scriptLinux = (& wsl.exe -d $Distro -e wslpath -a "$scriptWin").Trim()
|
|
if (-not $scriptLinux) {
|
|
throw "Failed to resolve WSL path for $scriptWin"
|
|
}
|
|
|
|
if (-not $RunnerHome) {
|
|
$repoRootWin = Split-Path -Parent $PSScriptRoot
|
|
$defaultRunnerHomeWin = Join-Path $repoRootWin "ar_data/wsl_runner"
|
|
$RunnerHome = (& wsl.exe -d $Distro -e wslpath -a "$defaultRunnerHomeWin").Trim()
|
|
if (-not $RunnerHome) {
|
|
throw "Failed to resolve WSL runner home for $defaultRunnerHomeWin"
|
|
}
|
|
}
|
|
|
|
if (-not $ConfigPath) {
|
|
$repoRootWin = Split-Path -Parent $PSScriptRoot
|
|
$defaultConfigWin = Join-Path $repoRootWin "ar_data/wsl_runner/config.yaml"
|
|
$ConfigPath = (& wsl.exe -d $Distro -e wslpath -a "$defaultConfigWin").Trim()
|
|
if (-not $ConfigPath) {
|
|
throw "Failed to resolve WSL config path for $defaultConfigWin"
|
|
}
|
|
}
|
|
|
|
$parts = @("bash", (Quote-ShArg $scriptLinux), (Quote-ShArg $Action), "--runner-home", (Quote-ShArg $RunnerHome))
|
|
$parts += @("--runner-bin", (Quote-ShArg $RunnerBin), "--config-path", (Quote-ShArg $ConfigPath))
|
|
if ($ServerUrl) { $parts += @("--server-url", (Quote-ShArg $ServerUrl)) }
|
|
if ($Token) { $parts += @("--token", (Quote-ShArg $Token)) }
|
|
if ($Labels) { $parts += @("--labels", (Quote-ShArg $Labels)) }
|
|
if ($Attach) { $parts += "--attach" }
|
|
if ($Once) { $parts += "--once" }
|
|
|
|
$cmd = $parts -join " "
|
|
Write-Host $cmd
|
|
& wsl.exe -d $Distro -e bash -lc $cmd
|
|
if ($LASTEXITCODE -ne 0) {
|
|
throw "WSL runner action failed ($LASTEXITCODE)"
|
|
}
|