Tasks/SetVariables.ps1

<#
    .SYNOPSIS
    Defines variables used by other tasks in the pipeline
#>

Add-BuildTask -Name SetVariables -Jobs {
    $script:PlumberConfig.BuildRoot = $BuildRoot
    $script:PlumberFiles = $null
    $script:PlumberChangedFiles = $null
    $script:PlumberChangedFilesLoaded = $false
    $moduleFolders = [System.Collections.Generic.List[string]]::new()
    $moduleFolderPaths = @(
        'Public'
        'Private'
        $script:PlumberConfig.IncludeModuleFolders
    )
    foreach ($moduleFolderPath in $moduleFolderPaths) {
        $moduleFolder = if ([System.IO.Path]::IsPathRooted($moduleFolderPath)) {
            $moduleFolderPath
        } else {
            Join-Path $BuildRoot $moduleFolderPath
        }
        if (Test-Path $moduleFolder) { $moduleFolders.Add($moduleFolder) }
    }
    # Stored as an array: consumers hand this to Pester's CodeCoveragePath.
    $script:moduleFolders = $moduleFolders.ToArray()

    $manifestPath = Resolve-PlumberModuleManifest -BuildRoot $BuildRoot -ModuleManifest (
        $script:PlumberConfig.ModuleManifest
    )

    $script:moduleManifest = Get-Item $manifestPath
    $script:moduleName = $script:moduleManifest.BaseName
    $script:psd1 = Import-PowerShellDataFile $script:moduleManifest.FullName

    Write-Build White "BuildRoot: $BuildRoot"
    Write-Build White "moduleName: $script:moduleName"
    Write-Build White "moduleFolders: $script:moduleFolders"
}