57 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/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}"
 |