< Summary - Kestrun — Combined Coverage

Information
Class: Public.Server.Enable-KrConfiguration
Assembly: Kestrun.PowerShell.Public
File(s): /home/runner/work/Kestrun/Kestrun/src/PowerShell/Kestrun/Public/Server/Enable-KrConfiguration.ps1
Tag: Kestrun/Kestrun@ca54e35c77799b76774b3805b6f075cdbc0c5fbe
Line coverage
0%
Covered lines: 0
Uncovered lines: 42
Coverable lines: 42
Total lines: 121
Line coverage: 0%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Coverage history

Coverage history 0 25 50 75 100 09/08/2025 - 20:34:03 Line coverage: 72.2% (26/36) Total lines: 109 Tag: Kestrun/Kestrun@3790ee5884494a7a2a829344a47743e0bf492e7210/13/2025 - 16:52:37 Line coverage: 0% (0/37) Total lines: 110 Tag: Kestrun/Kestrun@10d476bee71c71ad215bb8ab59f219887b5b4a5e11/14/2025 - 12:29:34 Line coverage: 0% (0/36) Total lines: 109 Tag: Kestrun/Kestrun@5e12b09a6838e68e704cd3dc975331b9e680a62611/19/2025 - 02:25:56 Line coverage: 0% (0/37) Total lines: 110 Tag: Kestrun/Kestrun@98ff905e5605a920343154665980a71211a03c6d12/12/2025 - 17:27:19 Line coverage: 0% (0/41) Total lines: 115 Tag: Kestrun/Kestrun@826bf9dcf9db118c5de4c78a3259bce9549f0dcd01/02/2026 - 00:16:25 Line coverage: 0% (0/54) Total lines: 139 Tag: Kestrun/Kestrun@8405dc23b786b9d436fba0d65fb80baa4171e1d001/08/2026 - 02:20:28 Line coverage: 0% (0/44) Total lines: 125 Tag: Kestrun/Kestrun@4bc17b7e465c315de6386907c417e44fcb0fd3eb01/12/2026 - 18:03:06 Line coverage: 0% (0/42) Total lines: 121 Tag: Kestrun/Kestrun@956332ccc921363590dccd99d5707fb20b50966b

Metrics

File(s)

/home/runner/work/Kestrun/Kestrun/src/PowerShell/Kestrun/Public/Server/Enable-KrConfiguration.ps1

#LineLine coverage
 1<#
 2    .SYNOPSIS
 3        Enables Kestrun server configuration and starts the server.
 4    .DESCRIPTION
 5        This function applies the configuration to the Kestrun server and starts it.
 6    .PARAMETER Server
 7        The Kestrun server instance to configure and start. This parameter is mandatory.
 8    .PARAMETER ExcludeVariables
 9        An array of variable names to exclude from the runspaces.
 10    .PARAMETER ExcludeFunctions
 11        An array of function name patterns to exclude from the runspaces.
 12    .PARAMETER Quiet
 13        If specified, suppresses output messages during the configuration and startup process.
 14    .PARAMETER PassThru
 15        If specified, the cmdlet will return the modified server instance after applying the configuration.
 16    .EXAMPLE
 17        Enable-KrConfiguration -Server $server
 18        Applies the configuration to the specified Kestrun server instance and starts it.
 19    .NOTES
 20        This function is designed to be used after the server has been configured with routes, listeners,
 21        and other middleware components.
 22#>
 23function Enable-KrConfiguration {
 24    [KestrunRuntimeApi('Definition')]
 25    [CmdletBinding()]
 26    [OutputType([Kestrun.Hosting.KestrunHost])]
 27    [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingWriteHost', '')]
 28    param(
 29        [Parameter(Mandatory = $false, ValueFromPipeline = $true)]
 30        [Kestrun.Hosting.KestrunHost]$Server,
 31        [Parameter()]
 32        [string[]]$ExcludeVariables,
 33        [Parameter()]
 34        [string[]]$ExcludeFunctions,
 35        [Parameter()]
 36        [switch]$Quiet,
 37        [Parameter()]
 38        [switch]$PassThru
 39    )
 40    begin {
 41        # Ensure the server instance is resolved
 042        $Server = Resolve-KestrunServer -Server $Server
 43    }
 44    process {
 45        # Collect assigned variables from the parent scope, resolving their values
 046        $variables = Get-KrAssignedVariable -FromParent -ResolveValues -IncludeSetVariable -ExcludeVariables $ExcludeVar
 47
 048        Write-KrLog -Level Debug -Logger $Server.Logger -Message 'Collected {VarCount} user-defined variables for server
 49
 50        # AUTO: determine caller script path to filter session-defined functions
 051        $callerPath = [Kestrun.KestrunHostManager]::EntryScriptPath
 052        if ([string]::IsNullOrEmpty($callerPath)) {
 053            throw 'KestrunHostManager is not properly initialized. EntryScriptPath is not set.'
 54        }
 55        # AUTO: collect session-defined functions present now
 056        $fx = @( Get-Command -CommandType Function | Where-Object { -not $_.Module } )
 57
 058        if ($callerPath) {
 059            $fx = $fx | Where-Object {
 060                $_.ScriptBlock.File -and
 061                ((Resolve-Path -LiteralPath $_.ScriptBlock.File -ErrorAction SilentlyContinue)?.ProviderPath) -eq $calle
 62            }
 063            $fx = @($fx)  # normalize again
 64        }
 65
 66        # Exclude functions by name patterns if specified
 067        if ($ExcludeFunctions) {
 068            $fx = $fx | Where-Object {
 069                $n = $_.Name
 070                -not ($ExcludeFunctions | Where-Object { $n -like $_ }).Count
 71            }
 072            $fx = @($fx)  # normalize again
 73        }
 74
 75        # Create a dictionary of function names to their definitions
 76        # NOTE: exclude OpenAPI metadata functions (OpenApiPath/OpenApiWebhook/OpenApiCallback)
 77        # from the general function map; they are handled separately.
 078        $fxMap = $null
 079        if ($fx -and $fx.Count -gt 0) {
 080            $fxUser = @($fx | Where-Object { -not (Test-KrFunctionHasAttribute -Command $_ -AttributeNameRegex 'OpenApi(
 081            $fxMap = [System.Collections.Generic.Dictionary[string, string]]::new([System.StringComparer]::OrdinalIgnore
 082            foreach ($f in $fxUser) { $fxMap[$f.Name] = $f.Definition }
 83        }
 84
 85        # Create a dictionary of OpenAPI callback function names to their definitions
 086        $fxCallBack = $null
 087        if ($fx -and $fx.Count -gt 0) {
 088            $cb = @($fx | Where-Object { Test-KrFunctionHasAttribute -Command $_ -AttributeNameRegex 'OpenApiCallback' }
 089            if ($cb -and $cb.Count -gt 0) {
 090                $fxCallBack = [System.Collections.Generic.Dictionary[string, string]]::new([System.StringComparer]::Ordi
 091                foreach ($f in $cb) { $fxCallBack[$f.Name] = $f.Definition }
 92            }
 93        }
 94
 095        if ($Server.Logger -and $Server.Logger.IsEnabled([Serilog.Events.LogEventLevel]::Debug)) {
 096            $callbackNames = @()
 097            if ($fxCallBack) {
 098                $callbackNames = @($fxCallBack.Keys)
 099                [System.Array]::Sort($callbackNames, [System.StringComparer]::OrdinalIgnoreCase)
 100            }
 0101            Write-KrLog -Level Debug -Logger $Server.Logger -Message 'Detected {CallbackCount} OpenAPI callback function
 102        }
 103
 0104        Write-KrLog -Level Debug -Logger $Server.Logger -Message 'Enabling Kestrun server configuration with {VarCount} 
 105        # Apply the configuration to the server
 106        # Set the user-defined variables in the server configuration
 0107        $Server.EnableConfiguration($variables, $fxMap, $fxCallBack) | Out-Null
 108
 0109        Write-KrLog -Level Information -Logger $Server.Logger -Message 'Kestrun server configuration enabled successfull
 110
 0111        if (-not $Quiet.IsPresent) {
 0112            Write-Host 'Kestrun server configuration enabled successfully.'
 0113            Write-Host "Server Name: $($Server.Options.ApplicationName)"
 114        }
 115
 0116        if ($PassThru.IsPresent) {
 117            # if the PassThru switch is specified, return the modified server instance
 0118            return $Server
 119        }
 120    }
 121}

Methods/Properties

Enable-KrConfiguration()