Files
WebDrop/scripts/update-wsl-podman.ps1

40 lines
2.0 KiB
PowerShell

$ErrorActionPreference = 'Stop'
function ConvertTo-WslPath([string]$Path) {
$fullPath = [IO.Path]::GetFullPath($Path)
if ($fullPath -notmatch '^([A-Za-z]):\\(.*)$') { throw "Workspace must be on a Windows drive: $fullPath" }
$drive = $Matches[1].ToLowerInvariant()
$relative = $Matches[2].Replace('\', '/')
return "/mnt/$drive/$relative"
}
$repoRoot = (Resolve-Path (Join-Path $PSScriptRoot '..')).Path
$repoWsl = ConvertTo-WslPath $repoRoot
$unitPath = (Resolve-Path (Join-Path $PSScriptRoot '..\deploy\webdrop.container')).Path
$unitWsl = ConvertTo-WslPath $unitPath
$updatePath = (Resolve-Path (Join-Path $PSScriptRoot 'wsl-podman-update.sh')).Path
$updateWsl = ConvertTo-WslPath $updatePath
$commit = (& git -C $repoRoot rev-parse --short=12 HEAD).Trim()
if ($LASTEXITCODE -ne 0) { throw 'Could not read the current Git commit.' }
$tagOutput = & git -C $repoRoot describe --tags --exact-match HEAD 2>$null
$tag = if ($tagOutput) { "$tagOutput".Trim() } else { 'dev' }
$buildTime = [TimeZoneInfo]::ConvertTimeBySystemTimeZoneId([DateTimeOffset]::UtcNow, 'China Standard Time').ToString('yyyy-MM-dd HH:mm')
$deployHome = '/home/justme/podman/webdrop'
$configDir = '/home/justme/.config/containers/systemd'
& wsl.exe -d Debian -- mkdir -p $deployHome $configDir
if ($LASTEXITCODE -ne 0) { throw 'Could not create the WSL deployment directories.' }
& wsl.exe -d Debian -- install -D -m 755 $updateWsl "$deployHome/update.sh"
if ($LASTEXITCODE -ne 0) { throw 'Could not install the WSL update script.' }
& wsl.exe -d Debian -- install -D -m 644 $unitWsl "$deployHome/webdrop.container"
if ($LASTEXITCODE -ne 0) { throw 'Could not install the WebDrop Quadlet.' }
& wsl.exe -d Debian -- ln -sfn "$deployHome/webdrop.container" "$configDir/webdrop.container"
if ($LASTEXITCODE -ne 0) { throw 'Could not link the Quadlet into the user systemd directory.' }
& wsl.exe -d Debian -- bash "$deployHome/update.sh" $repoWsl $commit $tag $buildTime
if ($LASTEXITCODE -ne 0) { throw 'The WSL Podman build or service update failed.' }