[CmdletBinding()] param( [string]$Preset = "windows-msvc-default", [string]$Configuration = "Debug", [string]$Target = "PanoPainter" ) $ErrorActionPreference = "Stop" $started = Get-Date & cmake --build --preset $Preset --config $Configuration --target $Target $buildExitCode = $LASTEXITCODE if ($buildExitCode -ne 0) { $elapsed = [int]((Get-Date) - $started).TotalMilliseconds [ordered]@{ command = "package-smoke" preset = $Preset configuration = $Configuration target = $Target stage = "build" exitCode = $buildExitCode elapsedMs = $elapsed } | ConvertTo-Json -Compress exit $buildExitCode } $binaryDir = Join-Path (Join-Path (Join-Path (Get-Location) "out/build/$Preset") $Configuration) "$Target.exe" $dataDir = Join-Path (Join-Path (Join-Path (Get-Location) "out/build/$Preset") $Configuration) "data" $checks = @( [ordered]@{ name = "executable"; path = $binaryDir; exists = Test-Path -LiteralPath $binaryDir -PathType Leaf }, [ordered]@{ name = "data"; path = $dataDir; exists = Test-Path -LiteralPath $dataDir -PathType Container } ) $failed = @($checks | Where-Object { -not $_.exists }) $exitCode = if ($failed.Count -eq 0) { 0 } else { 2 } $elapsedMs = [int]((Get-Date) - $started).TotalMilliseconds [ordered]@{ command = "package-smoke" preset = $Preset configuration = $Configuration target = $Target exitCode = $exitCode elapsedMs = $elapsedMs checks = $checks } | ConvertTo-Json -Compress -Depth 5 exit $exitCode