Private/Initialize-Watchmen.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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 = @()
                InfluxDB = @()
                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)"
}