GPODoc.psm1

#Module vars
$ModulePath = $PSScriptRoot

$Public  = Get-ChildItem $PSScriptRoot\Public\*.ps1 -ErrorAction Stop
$Private = Get-ChildItem $PSScriptRoot\Private\*.ps1 -ErrorAction Stop
[string[]]$PrivateModules = Get-ChildItem $PSScriptRoot\Private -ErrorAction Stop |
    Where-Object {$_.PSIsContainer} |
        Select-Object -ExpandProperty FullName

Write-Output "$($PrivateModules.count) modules"

# dot source the files
if ($Private) {
    foreach ($import in $Private) {
        try {
            . $import.FullName
        }
        catch {
            Write-Error "Failed to import function $($import.FullName): $_"
        }
    }
}
if ($Public) {
    foreach ($import in $Public) {
        try {
            . $import.FullName
        }
        catch {
            Write-Error "Failed to import function $($import.FullName): $_"
        }
    }
}

# load dependency modules
foreach ($Module in $PrivateModules) {
    try {
        Import-Module $Module -ErrorAction Stop
    }
    catch {
        Write-Error "Failed to import module $Module`: $_"
    }
}