scripts/Regenerate-Samples.ps1

#Requires -Version 7.4
param (); $ErrorActionPreference='Stop'; $repoRoot=Split-Path $PSScriptRoot -Parent; Push-Location $repoRoot
try { . (Join-Path $repoRoot modules shared Schema.ps1); $fixturePath=Join-Path $repoRoot tests fixtures synthetic-multi-tool.json; $samplesDir=Join-Path $repoRoot samples; $fixtureEnvelope=Get-Content $fixturePath -Raw|ConvertFrom-Json; $v2Findings=[System.Collections.Generic.List[object]]::new(); $runId='sample-'+(Get-Date -Format yyyyMMdd-HHmmss); foreach ($rawFinding in $fixtureEnvelope.Findings) { $entityType='AzureResource'; $entityId=''; if ($rawFinding.ResourceId -match '^/subscriptions/') { $entityId=$rawFinding.ResourceId.ToLowerInvariant() } elseif ($rawFinding.ResourceId -match '^tenant:') { $entityId=$rawFinding.ResourceId; $entityType='Tenant' } elseif ($rawFinding.ResourceId -match 'github\.com') { $entityId=$rawFinding.ResourceId; $entityType='Repository' } else { $entityId=$rawFinding.ResourceId }; $v2Row=New-FindingRow -Id $rawFinding.Id -Source $rawFinding.Source -EntityId $entityId -EntityType $entityType -Title $rawFinding.Title -RuleId $rawFinding.Id -Compliant $rawFinding.Compliant -ProvenanceRunId $runId -Category $rawFinding.Category -Severity $rawFinding.Severity -Detail $rawFinding.Detail -Remediation $rawFinding.Remediation -ResourceId $rawFinding.ResourceId; if ($rawFinding.Source -eq 'azqr') { $v2Row.Pillar='Security'; $v2Row.Impact='High'; $v2Row.Effort='Medium' }; $v2Findings.Add($v2Row) }; $resultsPath=Join-Path $samplesDir sample-findings-v2.json; $v2Findings|ConvertTo-Json -Depth 10|Set-Content $resultsPath -Encoding UTF8; @{SchemaVersion='3.1';Entities=@();Edges=@()}|ConvertTo-Json -Depth 10|Set-Content (Join-Path $samplesDir sample-entities.json) -Encoding UTF8; & (Join-Path $repoRoot New-HtmlReport.ps1) -InputPath $resultsPath -OutputPath (Join-Path $samplesDir sample-report-v2-mockup.html); & (Join-Path $repoRoot New-MdReport.ps1) -InputPath $resultsPath -OutputPath (Join-Path $samplesDir sample-report-v2-mockup.md); Write-Host '✓ Complete!' -ForegroundColor Green } finally { Pop-Location }