< 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@5f1d2b981c9d7292c11fd448428c6ab6c811c5de
Line coverage
0%
Covered lines: 0
Uncovered lines: 58
Coverable lines: 58
Total lines: 149
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 11/19/2025 - 17:40:50 Line coverage: 0% (0/37) Total lines: 110 Tag: Kestrun/Kestrun@fcf33342333cef0516fe0d0912a86709874fd02612/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@956332ccc921363590dccd99d5707fb20b50966b03/26/2026 - 03:54:59 Line coverage: 0% (0/45) Total lines: 126 Tag: Kestrun/Kestrun@844b5179fb0492dc6b1182bae3ff65fa7365521d04/19/2026 - 15:52:57 Line coverage: 0% (0/58) Total lines: 149 Tag: Kestrun/Kestrun@765a8f13c573c01494250a29d6392b6037f087c9

Coverage delta

Coverage delta 1 -1

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 {
 041        $effectiveQuiet = $Quiet.IsPresent
 042        if (-not $PSBoundParameters.ContainsKey('Quiet')) {
 043            $effectiveQuiet = [bool]$ExecutionContext.SessionState.PSVariable.GetValue('__krRunnerQuiet', $false)
 44        }
 45
 46        # Ensure the server instance is resolved
 047        $Server = Resolve-KestrunServer -Server $Server
 48    }
 49    process {
 50        # Collect assigned variables from the parent scope, resolving their values
 051        $variables = Get-KrAssignedVariable -FromParent -ResolveValues -IncludeSetVariable -ExcludeVariables $ExcludeVar
 52
 053        Write-KrLog -Level Debug -Logger $Server.Logger -Message 'Collected {VarCount} user-defined variables for server
 54
 55        # AUTO: determine caller script path to filter session-defined functions
 056        $callerPath = [Kestrun.KestrunHostManager]::EntryScriptPath
 057        if ([string]::IsNullOrEmpty($callerPath)) {
 058            throw 'KestrunHostManager is not properly initialized. EntryScriptPath is not set.'
 59        }
 060        $callerPath = (Resolve-Path -LiteralPath $callerPath -ErrorAction Stop).ProviderPath
 061        $callerDirectory = Split-Path -Parent $callerPath
 062        $callerDirectoryPrefix = if ([string]::IsNullOrWhiteSpace($callerDirectory)) {
 063            $null
 64        } else {
 065            $callerDirectory.TrimEnd('\', '/') + [System.IO.Path]::DirectorySeparatorChar
 66        }
 67        # AUTO: collect session-defined functions present now
 068        $fx = @( Get-Command -CommandType Function | Where-Object { -not $_.Module } )
 69
 070        if ($callerPath) {
 071            $fx = $fx | Where-Object {
 072                if (-not $_.ScriptBlock.File) {
 073                    return $false
 74                }
 75
 076                $functionPath = (Resolve-Path -LiteralPath $_.ScriptBlock.File -ErrorAction SilentlyContinue)?.ProviderP
 077                if (-not $functionPath) {
 078                    return $false
 79                }
 80
 081                if ($functionPath -eq $callerPath) {
 082                    return $true
 83                }
 84
 085                if ([string]::IsNullOrWhiteSpace($callerDirectoryPrefix)) {
 086                    return $false
 87                }
 88
 089                return $functionPath.StartsWith($callerDirectoryPrefix, [System.StringComparison]::OrdinalIgnoreCase)
 90            }
 091            $fx = @($fx)  # normalize again
 92        }
 93
 94        # Exclude functions by name patterns if specified
 095        if ($ExcludeFunctions) {
 096            $fx = $fx | Where-Object {
 097                $n = $_.Name
 098                -not ($ExcludeFunctions | Where-Object { $n -like $_ }).Count
 99            }
 0100            $fx = @($fx)  # normalize again
 101        }
 102
 103        # Create a dictionary of function names to their definitions
 104        # NOTE: exclude OpenAPI metadata functions (OpenApiPath/OpenApiWebhook/OpenApiCallback)
 105        # from the general function map; they are handled separately.
 0106        $fxMap = $null
 0107        if ($fx -and $fx.Count -gt 0) {
 0108            $fxUser = @($fx | Where-Object { -not (Test-KrFunctionHasAttribute -Command $_ -AttributeNameRegex 'OpenApi(
 0109            $fxMap = [System.Collections.Generic.Dictionary[string, string]]::new([System.StringComparer]::OrdinalIgnore
 0110            foreach ($f in $fxUser) { $fxMap[$f.Name] = $f.Definition }
 111        }
 112
 113        # Create a dictionary of OpenAPI callback function names to their definitions
 0114        $fxCallBack = $null
 0115        if ($fx -and $fx.Count -gt 0) {
 0116            $cb = @($fx | Where-Object { Test-KrFunctionHasAttribute -Command $_ -AttributeNameRegex 'OpenApiCallback' }
 0117            if ($cb -and $cb.Count -gt 0) {
 0118                $fxCallBack = [System.Collections.Generic.Dictionary[string, string]]::new([System.StringComparer]::Ordi
 0119                foreach ($f in $cb) { $fxCallBack[$f.Name] = $f.Definition }
 120            }
 121        }
 122
 0123        if ($Server.Logger -and $Server.Logger.IsEnabled([Serilog.Events.LogEventLevel]::Debug)) {
 0124            $callbackNames = @()
 0125            if ($fxCallBack) {
 0126                $callbackNames = @($fxCallBack.Keys)
 0127                [System.Array]::Sort($callbackNames, [System.StringComparer]::OrdinalIgnoreCase)
 128            }
 0129            Write-KrLog -Level Debug -Logger $Server.Logger -Message 'Detected {CallbackCount} OpenAPI callback function
 130        }
 131
 0132        Write-KrLog -Level Debug -Logger $Server.Logger -Message 'Enabling Kestrun server configuration with {VarCount} 
 133        # Apply the configuration to the server
 134        # Set the user-defined variables in the server configuration
 0135        $Server.EnableConfiguration($variables, $fxMap, $fxCallBack) | Out-Null
 136
 0137        Write-KrLog -Level Information -Logger $Server.Logger -Message 'Kestrun server configuration enabled successfull
 138
 0139        if (-not $effectiveQuiet) {
 0140            Write-Host 'Kestrun server configuration enabled successfully.'
 0141            Write-Host "Server Name: $($Server.Options.ApplicationName)"
 142        }
 143
 0144        if ($PassThru.IsPresent) {
 145            # if the PassThru switch is specified, return the modified server instance
 0146            return $Server
 147        }
 148    }
 149}

Methods/Properties

Enable-KrConfiguration()