WoodpeckerTools.psm1

Set-StrictMode -Version Latest

# Module-scope regex patterns used by private preprocessor functions.
$WPC_YAMLFILE_PATTERN = [regex]'^\s*\{{2,3}\s*yamlFile\s*\(([^)]*)\)\s*(?:\|\s*(.*?))?\s*\}{2,3}\s*$'
$WPC_INCLUDE_PATTERN  = [regex]'^\s*\{{3}\s*include\s*\(([^)]*)\)\s*\}{3}\s*$'
$script:WpcDependencyRoot = $null

$dotSourceParams = @{
    Filter      = '*.ps1'
    Recurse     = $true
    ErrorAction = 'Stop'
}

$public  = @(Get-ChildItem -Path (Join-Path $PSScriptRoot 'public')  @dotSourceParams)
$private = @(Get-ChildItem -Path (Join-Path $PSScriptRoot 'private') @dotSourceParams)

foreach ($import in @($public + $private)) {
    try {
        . $import.FullName
    } catch {
        throw "Unable to dot source [$($import.FullName)]"
    }
}

Set-Alias -Name wpc -Value Invoke-WoodpeckerPipelineCompiler -Scope Script
Export-ModuleMember -Function $public.BaseName -Alias wpc