cliHelper.core.psm1

#!/usr/bin/env pwsh
using namespace System

# #Requires -RunAsAdministrator
#Requires -Modules cliHelper.xconvert, cryptobase
#Requires -Psedition Core

# Load all sub-modules :

using module Private/Capstone.psm1
using module Private/Colors.psm1
using module Private/Config.psm1
using module Private/Connectivity.psm1
using module Private/Console.psm1
using module Private/DllUtils.psm1
using module Private/DNS.psm1
using module Private/Enums.psm1
using module Private/ErrorMan.psm1
using module Private/Exceptions.psm1
using module Private/ExecTracer.psm1
using module Private/FontMan.psm1
using module Private/FTP.psm1
using module Private/Geolocation.psm1
using module Private/HelpTools.psm1
using module Private/IPManagement.psm1
using module Private/Models.psm1
using module Private/MotdGen.psm1
using module Private/Network.psm1
using module Private/Proxy.psm1
using module Private/Runner.psm1
using module Private/Security.psm1
using module Private/Utilities.psm1
using module Private/WebTools.psm1

# Types that will be available to users when they import the module.
$typestoExport = @(
  [Capstone], [Color], [RGB], [InstallRequirements], [Requirement], [ProfileConfig], [PsProfile], [dotProfile], [AsyncPingResult], [Connectivity], [ConsoleCoordinate], [ConsoleReader], [ConsoleWriter], [DllUtils], [DNS], [ErrorSeverity], [HostOS], [MotdArtName], [Activity], [ActivityLog], [ErrorLog], [ErrorManager],
  [ErrorMetadata], [ExceptionType], [InstallException], [InstallFailedException], [TimeLine], [ExecMeasurement], [PSPVisitor], [ExecTracer], [FontMan], [FTP], [Geolocation], [HelpTools], [IPManagement], [PsRecord], [NetRouteDiagnostics], [TestNetConnectionResult], [cliart], [MotdGen], [HostsEntry], [HostsFile],
  [NetworkManager], [Proxy], [shExpMatch], [JobResult], [BackgroundJob], [AsyncHandle], [AsyncResult], [ProgressTheme], [JobRunnerOptions], [ThreadRunner], [PsRunner], [Security], [FileTools], [HashTools], [HostTools], [ModuleTools], [ProgressUtil], [StringTools], [dlh]
)
$TypeAcceleratorsClass = [PsObject].Assembly.GetType('System.Management.Automation.TypeAccelerators')
# Add type accelerators for every exportable type.
foreach ($Type in $typestoExport) {
  try {
    [void]$TypeAcceleratorsClass::Add($Type.FullName, $Type)
  }
  catch {
    # Ignore if already exists
    $null
  }
}
# Remove type accelerators when the module is removed.
$MyInvocation.MyCommand.ScriptBlock.Module.OnRemove = {
  foreach ($Type in $typestoExport) {
    $TypeAcceleratorsClass::Remove($Type.FullName)
  }
}.GetNewClosure();

$scripts = @();
$Public = Get-ChildItem "$PSScriptRoot/Public" -Filter "*.ps1" -Recurse -ErrorAction SilentlyContinue
$scripts += Get-ChildItem "$PSScriptRoot/Private" -Filter "*.ps1" -Recurse -ErrorAction SilentlyContinue
$scripts += $Public

foreach ($file in $scripts) {
  try {
    if ([string]::IsNullOrWhiteSpace($file.fullname)) { continue }
    . "$($file.fullname)"
  }
  catch {
    Write-Warning "Failed to import function $($file.BaseName): $_"
    $host.UI.WriteErrorLine($_)
  }
}

$Param = @{
  Function = $Public.BaseName
  Cmdlet   = '*'
  Alias    = '*'
  Verbose  = $false
}
Export-ModuleMember @Param