Private/Generator/Resolve-OpenApiGenOption.ps1
|
function Resolve-OpenApiGenOption { <# .SYNOPSIS Resolves the options of one generation run into a single object. .DESCRIPTION Service = ModuleName. Prefix (used for the connection commands) = NounPrefix, or the PascalCase module name when there is no NounPrefix. ModuleVersion defaults to 0.1.0 and Author to 'tcs.openapi', so the output never depends on the machine or user that runs the generator. ModulePath = OutputPath/ModuleName. UnwrapProperty is the response property to output instead of the whole response (empty for none). #> [CmdletBinding()] [OutputType([pscustomobject])] param( [Parameter(Mandatory = $true)] [string]$ModuleName, [Parameter(Mandatory = $true)] [string]$OutputPath, [Parameter()] [AllowEmptyString()] [string]$NounPrefix = '', [Parameter()] [AllowNull()] [version]$ModuleVersion, [Parameter()] [AllowNull()] [AllowEmptyString()] [string]$Author, [Parameter()] [AllowNull()] [AllowEmptyString()] [string]$UnwrapProperty, [Parameter(Mandatory = $true)] [string]$GeneratorVersion ) if ($ModuleName -notmatch '^[A-Za-z][A-Za-z0-9._-]*$') { throw "The module name '$ModuleName' is not valid: use letters, digits, '.', '_' and '-', starting with a letter." } if ($NounPrefix -ne '' -and $NounPrefix -notmatch '^[A-Za-z][A-Za-z0-9]*$') { throw "The noun prefix '$NounPrefix' is not valid: use letters and digits, starting with a letter." } $prefix = $NounPrefix if ($prefix -eq '') { $prefix = ConvertTo-OpenApiGenPascalCase -Value $ModuleName } $version = '0.1.0' if ($null -ne $ModuleVersion) { $version = $ModuleVersion.ToString() } $moduleAuthor = 'tcs.openapi' if (-not [string]::IsNullOrWhiteSpace($Author)) { $moduleAuthor = $Author } return [pscustomobject]@{ PSTypeName = 'Tcs.OpenApi.GenerationOption' ModuleName = $ModuleName Service = $ModuleName OutputPath = $OutputPath ModulePath = (Join-Path -Path $OutputPath -ChildPath $ModuleName) NounPrefix = $NounPrefix Prefix = $prefix ModuleVersion = $version Author = $moduleAuthor GeneratorVersion = $GeneratorVersion UnwrapProperty = [string]$UnwrapProperty } } |