Thing/scripts/capture-eve-screenshot.ps1
2026-06-05 22:07:43 +01:00

46 lines
1.5 KiB
PowerShell

param(
[string] $Target = "eve",
[string] $OutputDirectory = "artifacts\screenshots",
[string] $BundleId = "org.gamecult.evecanvas",
[string] $FixturePath = ""
)
$ErrorActionPreference = "Stop"
$projectRoot = Split-Path -Parent $PSScriptRoot
$outputRoot = if ([System.IO.Path]::IsPathRooted($OutputDirectory)) {
$OutputDirectory
} else {
Join-Path $projectRoot $OutputDirectory
}
New-Item -ItemType Directory -Force -Path $outputRoot | Out-Null
$stamp = Get-Date -Format "yyyyMMdd-HHmmss"
$localPath = Join-Path $outputRoot "eve-$stamp.png"
$remoteDir = "/var/mobile/Library/EveCanvas"
$remotePath = "$remoteDir/latest-screenshot.png"
$requestPath = "$remoteDir/capture-request"
$remoteFixturePath = "$remoteDir/current-surface.json"
ssh $Target "uiopen --bundleid '$BundleId' >/dev/null 2>&1 || true"
Start-Sleep -Seconds 1
ssh $Target "mkdir -p '$remoteDir' && chown mobile:mobile '$remoteDir' && rm -f '$remotePath' '$requestPath' && chown mobile:mobile '$remoteDir' 2>/dev/null || true"
if ($FixturePath) {
scp $FixturePath "${Target}:$remoteFixturePath" | Out-Host
} else {
ssh $Target "rm -f '$remoteFixturePath'"
}
ssh $Target "touch '$requestPath' && chown mobile:mobile '$requestPath' 2>/dev/null || true"
$deadline = (Get-Date).AddSeconds(10)
do {
Start-Sleep -Milliseconds 250
ssh $Target "test -s '$remotePath'"
if ($LASTEXITCODE -eq 0) {
scp "${Target}:$remotePath" $localPath
Write-Host $localPath
exit 0
}
} while ((Get-Date) -lt $deadline)
throw "Timed out waiting for EveCanvas screenshot at ${Target}:$remotePath"