src/functions/settings.ps1

$script:ConfigMapSettings = @{
    TmuxAutoWindow = @{
        EnvVar = 'QCONF_TMUX_AUTOWINDOW'
        Kind   = 'FeatureToggle'
    }
    Concurrently = @{
        EnvVar = 'QCONF_CONCURRENTLY'
        Kind   = 'FeatureToggle'
    }
    Debug = @{
        EnvVar = 'QCONF_DEBUG'
        Kind   = 'Debug'
    }
}

function Get-ConfigMapSetting {
    param(
        [Parameter(Mandatory)]
        [ValidateSet('TmuxAutoWindow', 'Concurrently', 'Debug')]
        [string]$Name
    )

    $definition = $script:ConfigMapSettings[$Name]
    if (-not $definition) {
        throw "Unknown ConfigMap setting '$Name'."
    }

    # Future settings providers can be chained here before falling back to env vars.
    return (Get-Item -Path "env:$($definition.EnvVar)" -ErrorAction SilentlyContinue).Value
}

function Test-ConfigMapFeatureEnabled {
    param(
        [Parameter(Mandatory)]
        [ValidateSet('TmuxAutoWindow', 'Concurrently')]
        [string]$Name
    )

    switch (Get-ConfigMapSetting -Name $Name) {
        { $_ -in '0', 'false', 'no', 'off' } { return $false }
        default { return $true }
    }
}