AsBuiltReport.Core.psm1

# Get public and private function definition files and dot source them
$Public = @(Get-ChildItem -Path $PSScriptRoot\Src\Public\*.ps1 -ErrorAction SilentlyContinue)
$Private = @(Get-ChildItem -Path $PSScriptRoot\Src\Private\*.ps1 -ErrorAction SilentlyContinue)

foreach ($Module in @($Public + $Private)) {
    try {
        . $Module.FullName
    } catch {
        Write-Error -Message "Failed to import function $($Module.FullName): $_"
    }
}

# Export public functions
Export-ModuleMember -Function $Public.BaseName

# Make helper functions available globally for report modules to use
# This keeps them out of the public API but accessible from report modules
$GlobalFunctions = @('Write-ReportModuleInfo', 'Get-RequiredModule')
foreach ($FunctionName in $GlobalFunctions) {
    if (Get-Command -Name $FunctionName -ErrorAction SilentlyContinue) {
        Set-Item -Path "Function:\Global:$FunctionName" -Value (Get-Command $FunctionName).ScriptBlock
    }
}