WoWManager.psm1

[Cmdletbinding()]
param()

Write-Verbose "Importing subcomponents"
$Folders = 'classes','private','public'
# Import everything in these folders
Foreach ($Folder in $Folders) {
    $Root = Join-Path -Path $PSScriptRoot -ChildPath $Folder
    Write-Verbose "Processing folder: $Root"
    if (Test-Path -Path $Root) {
        Write-Verbose "Getting all files in $Root"
        $Files = $null
        $Files = Get-ChildItem -Path $Root -Include "*.ps1","*.psm1" -Recurse
        # dot source each file
        foreach ($File in $Files) {
            Write-Verbose "Importing $($File)"
            Import-Module $File
            Write-Verbose "Importing $($File): Done"
        }
    }
}

Invoke-WoWManager

$Param = @{
    Function = (Get-ChildItem -Path "$PSScriptRoot\public" -Include "*.ps1" -Recurse).BaseName
    Variable = "*"
    Cmdlet = "*"
    Alias = "*"
}
Export-ModuleMember @Param