PowerCrate.psm1

$PublicPath  = Join-Path $PSScriptRoot 'Public'
$PrivatePath = Join-Path $PSScriptRoot 'Private'

Get-ChildItem -Path $PrivatePath -Filter '*.ps1' -File -ErrorAction SilentlyContinue |
    Sort-Object Name |
    ForEach-Object { . $_.FullName }

Get-ChildItem -Path $PublicPath -Filter '*.ps1' -File -ErrorAction SilentlyContinue |
    Sort-Object Name |
    ForEach-Object { . $_.FullName }

$PublicFunctions = @()
if (Get-Command -Name Get-PublicFunctions -ErrorAction SilentlyContinue) {
    $PublicFunctions = Get-PublicFunctions -PublicPath $PublicPath
}

if (-not $PublicFunctions -or $PublicFunctions.Count -eq 0) {
    $PublicFunctions = (Get-ChildItem -Path $PublicPath -Filter '*.ps1' -File | ForEach-Object { $_.BaseName })
}

Export-ModuleMember -Function $PublicFunctions