#!/usr/bin/env bash
set -euo pipefail

ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
workflow="$ROOT/.github/workflows/drhouse-cd.yaml"

yq -e '.jobs.prepare.outputs | has("OPS_API_BASE_URL")' "$workflow" >/dev/null
grep -Fq 'map(select(.isByoc != \"true\" or .managedByOpsServer == \"true\"))' "$workflow"
yq -e '.jobs."deploy-to-aws".steps[] | select(.id == "parse_group").run | contains("managed_by_ops_server")' "$workflow" >/dev/null
yq -e '.jobs."deploy-to-aws".steps[] | select(.id == "parse_group").run | contains("skip_update_kubeconfig=true")' "$workflow" >/dev/null
grep -Fq '"$managed_by_ops_server" != "true"' "$workflow"
yq -e '.jobs."deploy-to-aws".steps[] | select(.name == "check out code").if == "steps.parse_group.outputs.cluster != '\'''\'' && steps.parse_group.outputs.region != '\'''\''"' "$workflow" >/dev/null
yq -e '.jobs."deploy-to-aws".steps[] | select(.name == "update kubeconfig").if == "steps.parse_group.outputs.cluster != '\'''\'' && steps.parse_group.outputs.region != '\'''\'' && steps.parse_group.outputs.skip_cluster_access != '\''true'\'' && steps.parse_group.outputs.skip_update_kubeconfig != '\''true'\''"' "$workflow" >/dev/null
yq -e '.jobs."deploy-to-aws".steps[] | select(.name == "K8s apply").if == "steps.parse_group.outputs.cluster != '\'''\'' && steps.parse_group.outputs.region != '\'''\''"' "$workflow" >/dev/null
yq -e '.jobs."deploy-to-aws".steps[] | select(.name == "K8s apply").env.MANAGED_BY_OPS_SERVER == "${{ steps.parse_group.outputs.managed_by_ops_server }}"' "$workflow" >/dev/null
yq -e '.jobs."deploy-to-aws".steps[] | select(.name == "K8s apply").env.SKIP_CLUSTER_ACCESS == "${{ steps.parse_group.outputs.skip_update_kubeconfig }}"' "$workflow" >/dev/null

echo "drhouse-cd workflow contract tests passed"
