58 lines
1.9 KiB
PowerShell
58 lines
1.9 KiB
PowerShell
Set-StrictMode -Version Latest
|
|
$ErrorActionPreference = 'Stop'
|
|
|
|
$repoRoot = Split-Path -Parent $PSScriptRoot
|
|
$pluginsDir = Join-Path $repoRoot 'plugins\notify'
|
|
|
|
$assemblies = @{
|
|
slack = 'StellaOps.Notify.Connectors.Slack.dll'
|
|
teams = 'StellaOps.Notify.Connectors.Teams.dll'
|
|
email = 'StellaOps.Notify.Connectors.Email.dll'
|
|
webhook = 'StellaOps.Notify.Connectors.Webhook.dll'
|
|
}
|
|
|
|
$hasFailures = $false
|
|
|
|
foreach ($channel in $assemblies.Keys) {
|
|
$dir = Join-Path $pluginsDir $channel
|
|
if (-not (Test-Path -LiteralPath $dir -PathType Container)) {
|
|
Write-Host "ERROR: Missing plug-in directory '$dir'."
|
|
$hasFailures = $true
|
|
continue
|
|
}
|
|
|
|
$manifest = Join-Path $dir 'notify-plugin.json'
|
|
$assembly = Join-Path $dir $assemblies[$channel]
|
|
$baseName = [System.IO.Path]::GetFileNameWithoutExtension($assemblies[$channel])
|
|
$pdb = Join-Path $dir "$baseName.pdb"
|
|
$deps = Join-Path $dir "$baseName.deps.json"
|
|
|
|
if (-not (Test-Path -LiteralPath $manifest -PathType Leaf)) {
|
|
Write-Host "ERROR: Missing manifest for '$channel' connector ($manifest)."
|
|
$hasFailures = $true
|
|
}
|
|
|
|
if (-not (Test-Path -LiteralPath $assembly -PathType Leaf)) {
|
|
Write-Host "ERROR: Missing assembly for '$channel' connector ($assembly)."
|
|
$hasFailures = $true
|
|
}
|
|
|
|
Get-ChildItem -LiteralPath $dir -File | ForEach-Object {
|
|
switch ($_.Name) {
|
|
'notify-plugin.json' { return }
|
|
{ $_.Name -eq $assemblies[$channel] } { return }
|
|
{ $_.Name -eq "$baseName.pdb" } { return }
|
|
{ $_.Name -eq "$baseName.deps.json" } { return }
|
|
default {
|
|
Write-Host "ERROR: Unexpected file '$($_.Name)' in '$dir'."
|
|
$hasFailures = $true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if ($hasFailures) {
|
|
exit 1
|
|
}
|
|
exit 0
|