49 lines
1.5 KiB
PowerShell
49 lines
1.5 KiB
PowerShell
[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
|