Private/Add-PlumberTask.ps1
|
function Add-PlumberTask { <# .SYNOPSIS Imports a Plumber task into the active Invoke-Build scope. .DESCRIPTION Resolves task metadata, applies the task's RunWhen policy, dot-sources enabled task files, and records the task as an optional dependency of its parent group. Disabled tasks are registered as explicit skip tasks so direct task invocation explains why no validation ran. #> [CmdletBinding()] param ( [Parameter(Mandatory)] [string] $Name, [Parameter(Mandatory)] [string] $Path, [Parameter(Mandatory)] [string] $TaskRoot, [string] $Parent ) $taskSplat = @{ Name = $Name Path = $Path TaskRoot = $TaskRoot Parent = $Parent RunWhen = Get-PlumberTaskRunWhen -Name $Name } $task = Import-PlumberTask @taskSplat if ($task.ShouldRun) { . $task.FullName } else { $skipMessage = Get-PlumberTaskSkipMessage -Name $task.Name -RunWhen $task.RunWhen Add-BuildTask -Name $task.Name -Jobs ({ Write-Host $skipMessage }.GetNewClosure()) } if ($task.Parent) { $script:PlumberTaskJobs[$task.Parent] += "?$($task.Name)" } } |