handlers/qconf/entry-types.map.ps1

# Built-in get/set implementations for Entry._template types.
return [ordered]@{
    appconfig      = @{
        get = {
            param($ctx, $options, $_context)
            $file = Get-ConfigEntryTemplateFile -Entry $_context.self -TypeName 'appconfig'
            Find-ActiveOption -file $file -options $options
        }
        set = {
            param($ctx, $key, $value, $_context)
            $file = Get-ConfigEntryTemplateFile -Entry $_context.self -TypeName 'appconfig'
            Set-AppConfigOption -File $file -Values $value
        }
    }
    dotenv         = @{
        get = {
            param($ctx, $options, $_context)
            $file = Get-ConfigEntryTemplateFile -Entry $_context.self -TypeName 'dotenv'
            $result = Find-ActiveEnvOption -File $file -Options $options
            # Excluded keys still decide the active preset, but their values are never shown.
            $excluded = @((Get-ConfigEntryTemplate -Entry $_context.self).exclude | Where-Object { $_ })
            foreach ($key in @($result.Value.Keys)) {
                if ($excluded | Where-Object { $key -like $_ }) { $result.Value.Remove($key) }
            }
            $result
        }
        set = {
            param($ctx, $key, $value, $_context)
            $file = Get-ConfigEntryTemplateFile -Entry $_context.self -TypeName 'dotenv'
            Set-DotEnvOption -File $file -Values $value
        }
    }
    'user-secrets' = @{
        # `list` must not read or print these values; only an explicit get/show does.
        sensitive = $true
        get       = {
            param($ctx, $options, $_context)
            $csproj = Get-ConfigEntryTemplateFile -Entry $_context.self -TypeName 'user-secrets'
            Find-ActiveSecretOption -Csproj $csproj -Options $options
        }
        set       = {
            param($ctx, $key, $value, $_context)
            $csproj = Get-ConfigEntryTemplateFile -Entry $_context.self -TypeName 'user-secrets'
            Set-UserSecretOption -Csproj $csproj -Values $value
        }
    }
}