Tasks/TaskLoader.ps1
|
<# .SYNOPSIS Loads Plumber Invoke-Build tasks. .DESCRIPTION Registers Plumber's validation task graph in the active Invoke-Build scope. This script is dot-sourced from a build file so each task script can call Add-BuildTask in the correct scope. The Config hashtable is merged with Plumber defaults and exposed to tasks as $script:PlumberConfig. .PARAMETER Config Repository-specific Plumber configuration. Supported keys are ModuleManifest, CoverageMinimum, ExcludePaths, FileScope, DiffBase, IncludeTestsInPssa, LocalTasks, PublicFunctionPrefix, PublicFunctionPrefixExclusions and ExcludeTasks. .EXAMPLE . (Get-PlumberTaskLoader) -Config @{ ModuleManifest = 'MyModule.psd1' } Loads the default Plumber task graph for a module manifest. .EXAMPLE . (Get-PlumberTaskLoader) -Config @{ ModuleManifest = 'MyModule.psd1' CoverageMinimum = 80 ExcludePaths = @{ Backticks = @('Tests/Assets/*') } IncludeTestsInPssa = $false ExcludeTasks = @('YAML', 'ChangelogUpdated') } Loads Plumber tasks with custom coverage, PSScriptAnalyzer and task exclusion settings. #> param ( [hashtable] $Config = @{} ) $moduleRoot = Split-Path $PSScriptRoot -Parent # Task files are dot-sourced into Invoke-Build's script scope, so the private # helpers must be dot-sourced too; importing the module does not expose private # module functions to that build-file scope. foreach ($privateScript in Get-ChildItem (Join-Path $moduleRoot 'Private') -Filter '*.ps1') { . $privateScript.FullName } $script:PlumberConfig = New-PlumberConfig -Config $Config $script:PlumberConfig.ModuleRoot = $moduleRoot $script:PlumberTaskJobs = Initialize-PlumberTaskGraph $taskRoot = Join-Path $moduleRoot 'Tasks' . (Join-Path $taskRoot 'SetVariables.ps1') foreach ($taskGroup in Get-PlumberTaskGroup) { Add-PlumberTaskGroup -TaskGroup $taskGroup -TaskRoot $taskRoot } Add-PlumberLocalTask Add-PlumberTask -Name Validate -Path 'Pipeline/Validate.ps1' -TaskRoot $taskRoot |