59 lines
1.7 KiB
PowerShell
59 lines
1.7 KiB
PowerShell
param(
|
|
[string]$ScriptPath = "scripts/extract-frmP2PChat-il-risk.ps1",
|
|
[string]$OutDir = "runs/offline-chat-window/il-risk-contract"
|
|
)
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
$repo = Resolve-Path -LiteralPath (Join-Path $PSScriptRoot "..")
|
|
$target = if ([System.IO.Path]::IsPathRooted($ScriptPath)) {
|
|
$ScriptPath
|
|
}
|
|
else {
|
|
Join-Path $repo $ScriptPath
|
|
}
|
|
|
|
if (-not (Test-Path -LiteralPath $target)) {
|
|
throw "script not found: $target"
|
|
}
|
|
|
|
$outFull = if ([System.IO.Path]::IsPathRooted($OutDir)) {
|
|
$OutDir
|
|
}
|
|
else {
|
|
Join-Path $repo $OutDir
|
|
}
|
|
if (Test-Path -LiteralPath $outFull) {
|
|
Remove-Item -LiteralPath $outFull -Recurse -Force
|
|
}
|
|
|
|
$raw = & powershell -NoProfile -ExecutionPolicy Bypass -File $target -OutDir $OutDir
|
|
$result = $raw | ConvertFrom-Json
|
|
|
|
if (-not $result.ok) {
|
|
throw "extract script returned ok=false"
|
|
}
|
|
foreach ($path in @($result.ctor_il_file, $result.risk_csv_file, $result.risk_md_file)) {
|
|
if (-not (Test-Path -LiteralPath $path)) {
|
|
throw "expected output missing: $path"
|
|
}
|
|
}
|
|
if ($result.ctor_line_count -lt 500) {
|
|
throw "ctor IL line count too small: $($result.ctor_line_count)"
|
|
}
|
|
if ($result.risk_count -lt 50) {
|
|
throw "risk count too small: $($result.risk_count)"
|
|
}
|
|
$riskText = Get-Content -LiteralPath $result.risk_csv_file -Raw
|
|
foreach ($required in @("IL_00f6", "add_OnConnectError", "P2PChat::get_OtherJid", "IMPPManager::get_UserInfo")) {
|
|
if ($riskText -notmatch [regex]::Escape($required)) {
|
|
throw "risk csv missing evidence: $required"
|
|
}
|
|
}
|
|
|
|
[pscustomobject]@{
|
|
ok = $true
|
|
checked = 4
|
|
ctor_line_count = $result.ctor_line_count
|
|
risk_count = $result.risk_count
|
|
} | ConvertTo-Json -Compress
|