PSPuTTY.psm1

$PSPuTTY = $ExecutionContext.SessionState.Module
$PSPuTTY.PrivateData['PuTTYRegPath'] = 'Software\SimonTatham\PuTTY' 
Write-Verbose -Message ('Module path is: {0}' -f $PSPuTTY.ModulePath)

#region Aliases
### This section contains aliases that will be exported from the module.

### Import all aliases from the Aliases folder.
$AliasFileList = Get-ChildItem -Path $PSScriptRoot\Aliases\*Aliases.json -ErrorAction Ignore;
foreach ($AliasFile in $AliasFileList){
    $AliasJson = ConvertFrom-Json -InputObject (Get-Content -Path $AliasFile -Raw);
    foreach ($Alias in $AliasJson.Aliases) {
        ### Validate that each alias has a name and value defined. The description is optional.
        if ($Alias.Name -and $Alias.Value) {
            $NewAlias = @{
                Name = $Alias.Name;
                Value = $Alias.Value;
                Description = $Alias.Description;
            }
            New-Alias @NewAlias;
        } else {
            Write-Warning -Message ('Alias skipped in file {0}' -f $AliasFile.Name);
        }
    }
}
#endregion

#region Classes
$ClassList = Get-ChildItem -Path $PSScriptRoot\Models;
foreach ($Class in $ClassList) {
    Write-Verbose -Message ('Importing class file: {0}' -f $Class.FullName);
    . $Class.FullName;
}
#endregion

#region Functions

#region Public Functions
$FunctionList = Get-ChildItem -Path $PSScriptRoot\Functions\Public;
foreach ($Function in $FunctionList) {
    Write-Verbose -Message ('Importing function file: {0}' -f $Function.FullName);
    . $Function.FullName;
}
#endregion Public Functions

#region Private Functions
$FunctionList = Get-ChildItem -Path $PSScriptRoot\Functions\Private;
foreach ($Function in $FunctionList) {
    Write-Verbose -Message ('Importing function file: {0}' -f $Function.FullName);
    . $Function.FullName;
}
#endregion Private Functions

#endregion Functions

#region Import Argument Completers
$CompleterScriptList = Get-ChildItem -Path $PSScriptRoot\Completers\*.ps1;

foreach ($CompleterScript in $CompleterScriptList) {
    Write-Verbose -Message ('Import argument completer script: {0}' -f $CompleterScript.FullName);
    & $CompleterScript.FullName;
}
Write-Verbose -Message 'Finished importing argument completer scripts.';
#endregion

#region Format Data
$FormatFileList = Get-ChildItem -Path "$PSScriptRoot\Format Types\*" -Filter *format.ps1xml;
foreach ($FormatFile in $FormatFileList) {
    Update-FormatData -PrependPath $FormatFile.FullName;
    Write-Verbose -Message ('Added format file: {0}' -f $FormatFile.Name);
}
#endregion