#!/usr/bin/env bash set -euo pipefail repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" plugins_dir="${repo_root}/plugins/notify" declare -A 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" ) status=0 for channel in "${!assemblies[@]}"; do dir="${plugins_dir}/${channel}" if [[ ! -d "${dir}" ]]; then echo "ERROR: Missing plug-in directory '${dir}'." status=1 continue fi manifest="${dir}/notify-plugin.json" assembly="${dir}/${assemblies[$channel]}" base="${assemblies[$channel]%.dll}" pdb="${dir}/${base}.pdb" deps="${dir}/${base}.deps.json" if [[ ! -f "${manifest}" ]]; then echo "ERROR: Missing manifest for '${channel}' connector (${manifest})." status=1 fi if [[ ! -f "${assembly}" ]]; then echo "ERROR: Missing assembly for '${channel}' connector (${assembly})." status=1 fi while IFS= read -r -d '' file; do name="$(basename "${file}")" case "${name}" in "notify-plugin.json" \ | "${assemblies[$channel]}" \ | "${base}.pdb" \ | "${base}.deps.json") ;; *) echo "ERROR: Unexpected file '${name}' in '${dir}'." status=1 ;; esac done < <(find "${dir}" -maxdepth 1 -type f -print0) done exit "${status}"