Skip to content

Commit 24f115c

Browse files
StartAutomatingStartAutomating
authored andcommitted
New-PipeScript: Adding -ParameterHelp (Fixes #172)
1 parent 02834bf commit 24f115c

File tree

1 file changed

+33
-1
lines changed

1 file changed

+33
-1
lines changed

New-PipeScript.ps1

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,13 @@ function New-PipeScript {
66
Creates new PipeScript and PowerShell ScriptBlocks.
77
.EXAMPLE
88
New-PipeScript -Parameter @{a='b'}
9+
.EXAMPLE
10+
New-PipeScript -Parameter ([Net.HttpWebRequest].GetProperties()) -ParameterHelp @{
11+
Accept='
12+
HTTP Accept.
13+
HTTP Accept indicates what content types the web request will accept as a response.
14+
'
15+
}
916
#>
1017
[Alias('New-ScriptBlock')]
1118
param(
@@ -132,7 +139,10 @@ function New-PipeScript {
132139
# The type used for automatically generated parameters.
133140
# By default, ```[PSObject]```.
134141
[type]
135-
$AutoParameterType = [PSObject]
142+
$AutoParameterType = [PSObject],
143+
# If provided, will add inline help to parameters.
144+
[Collections.IDictionary]
145+
$ParameterHelp
136146
)
137147
begin {
138148
$ParametersToCreate = [Ordered]@{}
@@ -142,6 +152,19 @@ function New-PipeScript {
142152
$allEndBlocks = @()
143153
$allProcessBlocks = @()
144154
$allHeaders = @()
155+
filter embedParameterHelp {
156+
if ($_ -notmatch '^\s\<\#' -and $_ -notmatch '^\s\#') {
157+
$commentLines = @($_ -split '(?>\r\n|\n)')
158+
if ($commentLines.Count -gt 1) {
159+
'<#' + [Environment]::NewLine + "$_".Trim() + [Environment]::newLine + '#>'
160+
} else {
161+
"# $_"
162+
}
163+
} else {
164+
$_
165+
}
166+
167+
}
145168
}
146169
process {
147170
if ($parameter) {
@@ -159,6 +182,9 @@ function New-PipeScript {
159182
$parameterName = $EachParameter.Key
160183
$ParametersToCreate[$EachParameter.Key] =
161184
@(
185+
if ($parameterHelp -and $parameterHelp[$eachParameter.Key]) {
186+
$parameterHelp[$eachParameter.Key] | embedParameterHelp
187+
}
162188
$parameterAttribute = "[Parameter(ValueFromPipelineByPropertyName)]"
163189
$parameterType
164190
'$' + $parameterName
@@ -201,6 +227,9 @@ function New-PipeScript {
201227
# treat it as parameter name
202228
$ParametersToCreate[$Parameter] =
203229
@(
230+
if ($parameterHelp -and $parameterHelp[$Parameter]) {
231+
$parameterHelp[$Parameter] | embedParameterHelp
232+
}
204233
"[Parameter(ValueFromPipelineByPropertyName)]"
205234
"`$$Parameter"
206235
) -join [Environment]::NewLine
@@ -240,6 +269,9 @@ function New-PipeScript {
240269
}
241270
$ParametersToCreate[$prop.Name] =
242271
@(
272+
if ($parameterHelp -and $parameterHelp[$prop.Name]) {
273+
$parameterHelp[$prop.Name] | embedParameterHelp
274+
}
243275
$parameterAttribute = "[Parameter(ValueFromPipelineByPropertyName)]"
244276
$parameterAttribute
245277
if ($paramType -eq [boolean]) {

0 commit comments

Comments
 (0)