release.ps1

function Publish-PSUModule {
    param(
        $SourceDirectory,
        $ModuleName
    )

    $Folder = Join-Path ([IO.Path]::GetTempPath()) $ModuleName
    Remove-Item $Folder -Recurse -Force -ErrorAction SilentlyContinue
    Copy-Item $SourceDirectory $Folder -Container -Recurse

    $Module = Import-Module "$Folder" -PassThru -Scope Global -ErrorAction Continue 

    if (-not $Module)
    {
        throw "Failed to load: $ModuleName"
    }

    $ExistingModule = Find-Module -Name $Module.Name -RequiredVersion $Module.Version -ErrorAction SilentlyContinue
    if (-not $ExistingModule)
    {
        Publish-Module -Path "$Folder" -NuGetApiKey $Env:PowerShellGalleryKey
    }
}

Publish-PSUModule -ModuleName 'UniversalDashboard.Factory' -SourceDirectory "$PSScriptRoot"