MCGraph.psm1

#Requires -Version 5.0
[cmdletbinding()]
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignment','')]
param(
    [Parameter(Mandatory = $false,Position =0)][ValidateSet("Test","Production")][String] $Mode = "Production"
)

Add-Type -AssemblyName System.Web
Write-Verbose $PSScriptRoot

Write-Verbose 'Import everything in sub folders folder'
foreach($Folder in @('Private', 'Public'))
{
    $Root = Join-Path -Path $PSScriptRoot -ChildPath $Folder
    if(Test-Path -Path $Root)
    {
        Write-Verbose "processing folder $Root"
        $Files = Get-ChildItem -Path $Root -Filter *.ps1 -Recurse

        # dot source each file
        $Files | Where-Object{ $_.name -NotLike '*.Tests.ps1' } |
            ForEach-Object {
                Write-Verbose $_.basename
                . $PSItem.FullName
            }
        }
}

[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments','')]
$Local:Session = [Session]::new()
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments','')]
$Local:DefaultRecordLimit = 100

Update-FormatData -PrependPath $PSScriptRoot\MCGraph.Format.ps1xml

Export-ModuleMember -Function (Get-ChildItem -Path "$PSScriptRoot\Public\*.ps1" -Recurse).BaseName
if($Mode -eq "Test")    {
    Write-Verbose "Imported Private Functions in test mode"
    Export-ModuleMember -Function (Get-ChildItem -Path "$PSScriptRoot\Private\*.ps1" -Recurse).BaseName
}