fix: package live probe recorder compatibility variants
This commit is contained in:
76
scripts/verify-live-probe-recorder.ps1
Normal file
76
scripts/verify-live-probe-recorder.ps1
Normal file
@@ -0,0 +1,76 @@
|
||||
param(
|
||||
[string]$PackageDir = "runs/live-probe-recorder-package"
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
$repo = Resolve-Path -LiteralPath (Join-Path $PSScriptRoot "..")
|
||||
$packagePath = Join-Path $repo $PackageDir
|
||||
$verifyRoot = Join-Path $repo "runs/live-probe-recorder-verify-output"
|
||||
|
||||
if (-not (Test-Path -LiteralPath $packagePath)) {
|
||||
throw "package directory not found: $packagePath"
|
||||
}
|
||||
|
||||
$executables = @(
|
||||
Join-Path $packagePath "ISphereLiveProbeRecorder.exe"
|
||||
Join-Path $packagePath "variants\ISphereLiveProbeRecorder-x86.exe"
|
||||
Join-Path $packagePath "variants\ISphereLiveProbeRecorder-anycpu.exe"
|
||||
Join-Path $packagePath "variants\ISphereLiveProbeRecorder-x64.exe"
|
||||
)
|
||||
|
||||
$results = @()
|
||||
foreach ($exe in $executables) {
|
||||
if (-not (Test-Path -LiteralPath $exe)) {
|
||||
throw "recorder executable missing: $exe"
|
||||
}
|
||||
|
||||
$variantName = [System.IO.Path]::GetFileNameWithoutExtension($exe)
|
||||
$safeVariantName = $variantName -replace '[^A-Za-z0-9_.-]', '_'
|
||||
$probeRoot = Join-Path $verifyRoot $safeVariantName
|
||||
if (Test-Path -LiteralPath $probeRoot) {
|
||||
Remove-Item -LiteralPath $probeRoot -Recurse -Force
|
||||
}
|
||||
New-Item -ItemType Directory -Force -Path $probeRoot | Out-Null
|
||||
|
||||
$output = & $exe --out $probeRoot --no-pause 2>&1
|
||||
$exit = $LASTEXITCODE
|
||||
if ($exit -ne 0) {
|
||||
throw "recorder failed: $exe exit=$exit output=$($output -join "`n")"
|
||||
}
|
||||
|
||||
$created = Get-ChildItem -LiteralPath $probeRoot -Directory | Sort-Object LastWriteTime -Descending | Select-Object -First 1 -ExpandProperty FullName
|
||||
if (-not $created) {
|
||||
throw "recorder did not create a probe output directory: $exe"
|
||||
}
|
||||
|
||||
foreach ($required in @(
|
||||
"manifest.json",
|
||||
"probe_client_runtime.json",
|
||||
"process_details.json",
|
||||
"network_inventory.json",
|
||||
"filesystem_inventory.json",
|
||||
"scan_windows.json",
|
||||
"feasibility_summary.json"
|
||||
)) {
|
||||
$path = Join-Path $created $required
|
||||
if (-not (Test-Path -LiteralPath $path)) {
|
||||
throw "required output missing for ${exe}: $required"
|
||||
}
|
||||
}
|
||||
|
||||
$results += [ordered]@{
|
||||
exe = (Resolve-Path -LiteralPath $exe).Path
|
||||
sha256 = (Get-FileHash -Algorithm SHA256 -LiteralPath $exe).Hash
|
||||
length = (Get-Item -LiteralPath $exe).Length
|
||||
output_dir = $created
|
||||
ok = $true
|
||||
}
|
||||
}
|
||||
|
||||
[ordered]@{
|
||||
ok = $true
|
||||
package_dir = (Resolve-Path -LiteralPath $packagePath).Path
|
||||
verify_output_dir = (Resolve-Path -LiteralPath $verifyRoot).Path
|
||||
results = $results
|
||||
} | ConvertTo-Json -Depth 6 -Compress
|
||||
Reference in New Issue
Block a user