Untitled
unknown
plain_text
10 months ago
1.5 kB
11
Indexable
function Test-PluginRules($UPlugin){
$json = (Get-Content -Raw -LiteralPath $UPlugin) | ConvertFrom-Json
$base = Split-Path -Parent $UPlugin
if(-not $json.Modules){ Write-Host "No Modules[] in $UPlugin" -ForegroundColor Yellow; return }
foreach($m in $json.Modules){
$name = [string]$m.Name
$modDir = Join-Path $base ("Source\" + $name)
$build = Join-Path $modDir ($name + ".Build.cs")
if(-not (Test-Path $build)){
Write-Host ("Missing Build.cs: " + $build) -ForegroundColor Red
$alts = Get-ChildItem -Path (Join-Path $base "Source") -Recurse -Filter *.Build.cs -ErrorAction SilentlyContinue
if($alts){ Write-Host "Other Build.cs files seen:"; $alts | Select-Object -Expand FullName }
continue
}
$txt = Get-Content -LiteralPath $build -Raw
if($txt -notmatch "class\s+$([regex]::Escape($name))\s*:\s*ModuleRules"){
Write-Host ("Class name inside Build.cs does not match module '" + $name + "'") -ForegroundColor Red
$mClasses = [regex]::Matches($txt, "class\s+([A-Za-z0-9_]+)\s*:\s*ModuleRules") | ForEach-Object { $_.Groups[1].Value } | Select-Object -Unique
if($mClasses){ Write-Host ("Found class(es): " + ($mClasses -join ", ")); }
} else {
Write-Host ("OK: " + $name) -ForegroundColor Green
}
}
}
# Example:
Test-PluginRules "C:\...\Plugins\TimeManager\TimeManager.uplugin"
Test-PluginRules "C:\...\Plugins\DataReader\DataReader.uplugin"
Editor is loading...
Leave a Comment