#!/usr/bin/env -S pwsh -NoProfile

param(
    [switch]$ci,
    [switch]$fix
)

$rulesFile = './.PSScriptAnalyzerSettings.psd1'
$sources = @(
    './app/assets/bundled/bootstrap/',
    './script/windows/'
)

foreach ($source in $sources) {
    Write-Output "Inspecting scripts in '$source'"
    $scriptAnalyzerParams = @{
        Settings = $rulesFile
        Path = $source
        ReportSummary = $true
        Recurse = $true
        Fix = $fix
    }
    $results = Invoke-ScriptAnalyzer @scriptAnalyzerParams
    Write-Output $results
    $errorsAndWarnings = $results | Where-Object { $_.Severity -ge [Microsoft.Windows.PowerShell.ScriptAnalyzer.Generic.DiagnosticSeverity]::Warning }
    $problemCount = ($errorsAndWarnings | Measure-Object).Count
    if ($problemCount -gt 0 -and $ci) {
        throw "Lint failed with $problemCount problems"
    }
}
