Private/Initialize-Watchmen.ps1

function Initialize-Watchmen {
    [cmdletbinding()]
    param()

    Write-Verbose 'Initializing Watchmen config'
    Remove-Variable -Name Watchmen -Scope Global -ErrorAction Ignore

    $defaultNotifierCondition = 'OnFailure'

    $script:Watchmen = [pscustomobject]@{
        PSTypeName = 'Watchmen.State'
        CurrentTestSetId = 0
        InConfig = $false
        InTest = $false
        InNotifies = $false
        CurrentWatchmenFileRoot = $null
        Options = [pscustomobject]@{
            PSTypeName = 'Watchmen.Config'
            NotifierConditions = @{
                WatchmenOptions = $defaultNotifierCondition
                WatchmenTest = $defaultNotifierCondition
            }
            Notifiers = [ordered]@{
                Email = @()
                EventLog = @()
                LogFile = @()
                PowerShell = @()
                Slack = @()
                Syslog = @()
            }
            Rorschach = [pscustomobject]@{
                Endpoint = $null
                Credential = $null
            }
            #NotifierOptions = @{}
        }
        ThisTest = $null
        TestSets = @(
             [pscustomobject]@{
                 PSTypeName = 'Watchmen.TestSet'
                 ID = 0
                 Options = $null
                 Tests = @()
                 Notifiers = @{}
             }
        )
    }

    Write-Verbose "NotifierConditions initialized:`n$($script:watchmen.Options.NotifierConditions | Format-Table -Property * | Out-String)"
}