This pull request adds a new configuration parameter Web.OpenApi.UsePodeYamlInternal to the Pode module. This parameter forces the use of the internal YAML converter even if PSYaml or powershell-yaml modules are available. Additionally, it optimizes the YAML conversion process by caching the module import status.
Changes
Added the Web.OpenApi.UsePodeYamlInternal configuration parameter.
Updated the ConvertTo-PodeYaml function to utilize this new parameter.
New Code
<#
.SYNOPSIS
creates a YAML description of the data in the object - based on https://github.com/Phil-Factor/PSYaml
.DESCRIPTION
This produces YAML from any object you pass to it.
.PARAMETER Object
The object that you want scripted out. This parameter accepts input via the pipeline.
.PARAMETER Depth
The depth that you want your object scripted to
.EXAMPLE
Get-PodeOpenApiDefinition|ConvertTo-PodeYaml
#>
function ConvertTo-PodeYaml {
[CmdletBinding()]
[OutputType([string])]
param (
[parameter(Position = 0, Mandatory = $true, ValueFromPipeline = $true)]
[AllowNull()]
$InputObject,
[parameter()]
[int]
$Depth = 16
)
begin {
$pipelineObject = @()
}
process {
$pipelineObject += $_
}
end {
if ($pipelineObject.Count -gt 1) {
$InputObject = $pipelineObject
}
if ($PodeContext.Server.Web.OpenApi.UsePodeYamlInternal) {
return ConvertTo-PodeYamlInternal -InputObject $InputObject -Depth $Depth -NoNewLine
}
if ($null -eq $PodeContext.Server.InternalCache.YamlModuleImported) {
$PodeContext.Server.InternalCache.YamlModuleImported = ((Test-PodeModuleInstalled -Name 'PSYaml') -or (Test-PodeModuleInstalled -Name 'powershell-yaml'))
}
if ($PodeContext.Server.InternalCache.YamlModuleImported) {
return ($InputObject | ConvertTo-Yaml)
}
else {
return ConvertTo-PodeYamlInternal -InputObject $InputObject -Depth $Depth -NoNewLine
}
}
}
Reason for Change
The addition of this configuration parameter allows users to force the use of the internal YAML converter, which can be necessary for portability or compatibility reasons.
Description
This pull request adds a new configuration parameter
Web.OpenApi.UsePodeYamlInternal
to the Pode module. This parameter forces the use of the internal YAML converter even ifPSYaml
orpowershell-yaml
modules are available. Additionally, it optimizes the YAML conversion process by caching the module import status.Changes
Web.OpenApi.UsePodeYamlInternal
configuration parameter.ConvertTo-PodeYaml
function to utilize this new parameter.New Code
Reason for Change
The addition of this configuration parameter allows users to force the use of the internal YAML converter, which can be necessary for portability or compatibility reasons.