< 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@9d3a582b2d63930269564a7591aa77ef297cadeb
Line coverage
72%
Covered lines: 26
Uncovered lines: 10
Coverable lines: 36
Total lines: 109
Line coverage: 72.2%
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

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
 142        $Server = Resolve-KestrunServer -Server $Server
 143        if ($null -eq $Server) {
 044            throw 'Server is not initialized. Please ensure the server is configured before setting options.'
 45        }
 46    }
 47    process {
 148        $Variables = Get-KrAssignedVariable -FromParent -ResolveValues -IncludeSetVariable
 49
 50        # Build user variable map as before
 151        $vars = [System.Collections.Generic.Dictionary[string, object]]::new()
 152        foreach ($v in $Variables) {
 153            if ($ExcludeVariables -notcontains $v.Name) {
 154                if (-not [Kestrun.SharedState.SharedStateStore]::Contains($v.Name)) {
 155                    [void][Kestrun.SharedState.SharedStateStore]::Set($v.Name, $v.Value.Value, $true)
 56                }
 57            }
 58        }
 59
 160        $callerPath = $null
 161        $selfPath = $PSCommandPath
 162        foreach ($f in Get-PSCallStack) {
 163            $p = $f.InvocationInfo.ScriptName
 164            if ($p) {
 265                $rp = (Resolve-Path -LiteralPath $p -ErrorAction SilentlyContinue)?.ProviderPath
 366                if ($rp -and (!$selfPath -or $rp -ne (Resolve-Path -LiteralPath $selfPath).ProviderPath)) {
 167                    $callerPath = $rp
 68                    break
 69                }
 70            }
 71        }
 72        # AUTO: collect session-defined functions present now
 373        $fx = Get-Command -CommandType Function | Where-Object { -not $_.Module }
 174        if ($OnlyCurrentScript -and $callerPath) {
 075            $fx = $fx | Where-Object {
 076                $_.ScriptBlock.File -and
 077                ((Resolve-Path -LiteralPath $_.ScriptBlock.File -ErrorAction SilentlyContinue)?.ProviderPath) -eq $calle
 78            }
 79        }
 80
 81        # Exclude functions by name patterns if specified
 182        if ($ExcludeFunctions) {
 083            $fx = $fx | Where-Object {
 084                $n = $_.Name
 085                -not ($ExcludeFunctions | Where-Object { $n -like $_ }).Count
 86            }
 87        }
 88
 89        # Create a dictionary of function names to their definitions
 190        $fxMap = $null
 191        if ($fx.Count) {
 192            $fxMap = [System.Collections.Generic.Dictionary[string, string]]::new([System.StringComparer]::OrdinalIgnore
 293            foreach ($f in $fx) { $fxMap[$f.Name] = $f.Definition }
 94        }
 95        # Apply the configuration to the server
 96        # Set the user-defined variables in the server configuration
 297        $Server.EnableConfiguration($vars, $fxMap) | Out-Null
 198        if (-not $Quiet.IsPresent) {
 099            Write-Host 'Kestrun server configuration enabled successfully.'
 0100            Write-Host "Server Name: $($Server.Options.ApplicationName)"
 101        }
 102
 1103        if ($PassThru.IsPresent) {
 104            # if the PassThru switch is specified, return the server instance
 105            # Return the modified server instance
 0106            return $Server
 107        }
 108    }
 109}

Methods/Properties

Enable-KrConfiguration()