Monocle.psm1

$ProgressPreference = 'SilentlyContinue'

# root path to module
$root = Split-Path -Parent -Path $MyInvocation.MyCommand.Path

# get the path to the drivers and load them
$libraries = Join-Path $root 'lib'
$path = Join-Path $libraries 'WebDriver'

switch ($PSEdition.ToLowerInvariant()) {
    'core' {
        $path = Join-Path $path 'netstandard2.0'
    }

    default {
        $path = Join-Path $path 'net45'
    }
}

Get-ChildItem -Path $path -Filter '*.dll' -File -Force | ForEach-Object {
    Add-Type -Path $_.FullName | Out-Null
}

# load private functions
Get-ChildItem "$($root)/Private/*.ps1" | Resolve-Path | ForEach-Object { . $_ }

# get current functions to import public functions
$sysfuncs = Get-ChildItem Function:

# load public functions
Get-ChildItem "$($root)/Public/*.ps1" | Resolve-Path | ForEach-Object { . $_ }

# get functions from memory and compare to existing to find new functions added
$funcs = Get-ChildItem Function: | Where-Object { $sysfuncs -notcontains $_ }

# export the module's public functions
Export-ModuleMember -Function ($funcs.Name)