ZoomZoom.psm1

function Get-ChildScript {
    param (
        [Parameter(Mandatory = $true)] [string] $Directory
    )

    $Children = @( )

    $Children += if (Test-Path -Path (Join-Path -Path "$PSScriptRoot" -ChildPath "$Directory") -PathType Container) {
        @( Get-ChildItem -Path (Join-Path -Path "$PSScriptRoot" -ChildPath "$Directory" | Join-Path -ChildPath "*.ps1") )
    }

    return $Children
}

$Public = Get-ChildScript -Directory "Public"
$Private = Get-ChildScript -Directory "Private"

@($Public + $Private) | ForEach-Object {
    if ($_.Name -cnotmatch "\.Tests\.ps1$") {
        try {
            . $_.FullName
        }
        catch {
            Write-Error -Message "Failed to import function $($_.FullName): $_"
        }
    }
}

Export-ModuleMember -Function $Public.BaseName