Public/Get-FeatureFlag.ps1

function Get-FeatureFlag {
    <#
    .SYNOPSIS
    Retrieve feature flags from the Gatekeeper configuration.

    .DESCRIPTION
    Retrieves feature flags from the configured feature flag folder. Results are
    cached in module scope to avoid repeated disk reads. Returns all flags or a
    specific one by name.

    .PARAMETER Name
    The name of the feature flag to retrieve. If not specified, all flags are returned.

    .EXAMPLE
    $flag = Get-FeatureFlag -Name 'MyFeature'

    Retrieves the feature flag named 'MyFeature' from the configured folder.

    .EXAMPLE
    $allFlags = Get-FeatureFlag

    Returns all feature flags from the configured folder.
    #>

    [CmdletBinding()]
    [OutputType([FeatureFlag])]
    param (
        [Parameter()]
        [string]
        $Name
    )
    begin {
        if ($null -eq $script:GatekeeperFeatureFlags) {
            $script:GatekeeperFeatureFlags = @{}
            $folder = Get-FeatureFlagFolder
            Write-Verbose "Loading feature flags from folder: $folder"
            $flagFiles = Get-ChildItem -Path $folder -Filter '*.json' -File -ErrorAction SilentlyContinue
            foreach ($file in $flagFiles) {
                Write-Verbose "Reading feature flag from file: $($file.FullName)"
                $flag = Read-FeatureFlag -FilePath $file.FullName
                if ($null -ne $flag) {
                    $script:GatekeeperFeatureFlags[$file.BaseName] = $flag
                    Write-Verbose "Loaded feature flag: $($flag.Name)"
                } else {
                    Write-Warning "Failed to load feature flag from file: $($file.FullName)"
                }
            }
        }
        $flags = $script:GatekeeperFeatureFlags
    }

    process {
        if ($Name) {
            return $flags[$Name]
        }
        if ($flags.Count -eq 0) {
            Write-Warning "No feature flags found in the folder."
            return @()
        }
        Write-Verbose "Returning all feature flags."
        return $flags.Values
    }

    end {
        Write-Verbose "Completed retrieval of feature flags."
    }
}