Private/Convert-AtwsFunctionToText.ps1
<# .COPYRIGHT Copyright (c) Hugo Klemmestad. All rights reserved. Licensed under the MIT license. See https://github.com/ecitsolutions/Autotask/blob/master/LICENSE.md for license information. #> Function Convert-AtwsFunctionToText { <# .SYNOPSIS This function generates a scriptblock as text from a custom, structured object created by other functions in this module .DESCRIPTION This function assembles the various parts of a function into a single text scriptblock. It is not generic. It is internal to this module. .INPUTS [PSObject] .OUTPUTS [String] #> [CmdLetBinding()] Param ( [Parameter(Mandatory = $true)] [PSObject] $AtwsFunction ) begin { # Enable modern -Debug behavior if ($PSCmdlet.MyInvocation.BoundParameters['Debug'].IsPresent) { $DebugPreference = 'Continue' } Write-Debug ('{0}: Begin of function' -F $MyInvocation.MyCommand.Name) # Value to insert in #Requires tag on top of every script file $requiredVersion = '5.0' # The textframe with placeholders for all dynamic elements $textFrame = "#Requires -Version {0}`n{1}`nFunction {2}`n{{`n{3}`n [CmdLetBinding(SupportsShouldProcess = `$true, DefaultParameterSetName='{4}', ConfirmImpact='{5}',`n HelpURI='https://github.com/ecitsolutions/Autotask/blob/master/Docs/{2}.md')]`n Param`n (`n{6}`n )`n{7}`n}}" } process { # Generate the function text from $textframe with all placeholders replaced with the correct variable $functionText = $textFrame -F $requiredVersion, $AtwsFunction.Copyright, $AtwsFunction.FunctionName, $AtwsFunction.HelpText, $AtwsFunction.DefaultParameterSetName, $AtwsFunction.ConfirmImpact, $($AtwsFunction.Parameters -join ",`n`n"), $AtwsFunction.Definition } end { # return the function text Return $functionText } } |