63 lines
1.6 KiB
PowerShell
63 lines
1.6 KiB
PowerShell
[CmdletBinding()]
|
|
param(
|
|
[string]$Root = ""
|
|
)
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
if ([string]::IsNullOrWhiteSpace($Root)) {
|
|
$Root = (Resolve-Path (Join-Path $PSScriptRoot "..\..")).Path
|
|
}
|
|
$started = Get-Date
|
|
$pattern = '\b(?:GL|WGL)_[A-Z0-9_]+\b'
|
|
$allowed = @(
|
|
"src/renderer_gl/",
|
|
"src/rtt.cpp",
|
|
"src/texture.cpp"
|
|
)
|
|
$violations = @()
|
|
$files = Get-ChildItem -Path (Join-Path $Root "src") -Recurse -File -Include *.c,*.cc,*.cpp,*.h,*.hpp
|
|
|
|
foreach ($file in $files) {
|
|
$relative = $file.FullName.Substring($Root.Length).TrimStart('\', '/').Replace('\', '/')
|
|
$isAllowed = $false
|
|
foreach ($prefix in $allowed) {
|
|
if ($relative.StartsWith($prefix)) {
|
|
$isAllowed = $true
|
|
break
|
|
}
|
|
}
|
|
if ($isAllowed) {
|
|
continue
|
|
}
|
|
|
|
$lineNumber = 0
|
|
foreach ($line in Get-Content -LiteralPath $file.FullName) {
|
|
$lineNumber += 1
|
|
$trimmed = $line.TrimStart()
|
|
if ($trimmed.StartsWith("//")) {
|
|
continue
|
|
}
|
|
$matches = [regex]::Matches($line, $pattern)
|
|
foreach ($match in $matches) {
|
|
$violations += [ordered]@{
|
|
file = $relative
|
|
line = $lineNumber
|
|
token = $match.Value
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
$exitCode = if ($violations.Count -eq 0) { 0 } else { 1 }
|
|
$elapsed = [int]((Get-Date) - $started).TotalMilliseconds
|
|
|
|
[ordered]@{
|
|
command = "check-renderer-boundary"
|
|
exitCode = $exitCode
|
|
violationCount = $violations.Count
|
|
violations = @($violations | Select-Object -First 50)
|
|
elapsedMs = $elapsed
|
|
} | ConvertTo-Json -Compress -Depth 4
|
|
|
|
exit $exitCode
|