src/assess/engine/Get-RuleSet.ps1

#Requires -Version 7.0
Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop'

<#
.SYNOPSIS
    Load rule files matching the supplied glob patterns.
 
.NOTES
    Requires the powershell-yaml module. Tracks ADO Story AB#5028.
#>

function Get-RuleSet {
    param([string[]] $Patterns)

    Import-Module powershell-yaml -ErrorAction Stop
    $ruleDir = "$PSScriptRoot/../rules"
    $files = Get-ChildItem $ruleDir -Filter *.yaml | Where-Object {
        $f = $_.BaseName
        $Patterns | Where-Object { $f -like $_ }
    }
    $sets = foreach ($file in $files) {
        $doc = ConvertFrom-Yaml (Get-Content $file.FullName -Raw)
        [pscustomobject]@{
            Area      = $doc.area
            Framework = $doc.framework
            Weight    = [double]($doc.weight ?? 1.0)
            Rules     = $doc.rules
        }
    }
    return $sets
}