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

REPO_ROOT=$(unset CDPATH && cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)
TMPDIR=$(mktemp -d)
trap 'rm -rf "$TMPDIR"' EXIT

mkdir -p \
  "$TMPDIR/deployments/regional-server" \
  "$TMPDIR/deployments/regional-server/regional-server/envs/prod-aws-us-west-2" \
  "$TMPDIR/deployments/lib" \
  "$TMPDIR/deployments/charts/regional-server" \
  "$TMPDIR/bin"

cp "$REPO_ROOT/deployments/regional-server/diff.sh" \
  "$TMPDIR/deployments/regional-server/diff.sh"

cat >"$TMPDIR/deployments/regional-server/regional-server/envs/prod-aws-us-west-2/values.yaml" <<'EOF'
regionalServer:
  image:
    repository: ""
    tag: ""
dataServer:
  enabled: true
  image:
    repository: ""
    tag: ""
EOF

cat >"$TMPDIR/deployments/lib/diff-lib.sh" <<'EOF'
#!/usr/bin/env bash
set -euo pipefail

parse_diff_args() {
  VENDOR=${1}
  ENV=${2}
  REGION=${3}
  LOGICAL_REGION=${4}
  OUTPUT_FILE=${5:-}
}

ensure_kubeconfig_permissions() {
  :
}

helm_diff() {
  printf '%s\n' "$*" >"$TEST_ROOT/helm_diff_args.txt"
}

kubectl_diff() {
  printf '%s|%s\n' "$1" "$2" >>"$TEST_ROOT/kubectl_diff_calls.txt"
}

write_diff_summary() {
  :
}
EOF
chmod +x "$TMPDIR/deployments/lib/diff-lib.sh"

cat >"$TMPDIR/bin/kubectl" <<'EOF'
#!/usr/bin/env bash
set -euo pipefail

if [[ "$*" == *'get deployment regionalserver'* ]]; then
  printf '%s' 'repo/regionalserver:v1.2.3'
  exit 0
fi

if [[ "$*" == *'get deployment data-server'* ]]; then
  printf '%s' 'repo/data-server:v4.5.6'
  exit 0
fi

exit 1
EOF
chmod +x "$TMPDIR/bin/kubectl"

PATH="$TMPDIR/bin:$PATH" TEST_ROOT="$TMPDIR" \
  bash "$TMPDIR/deployments/regional-server/diff.sh" aws prod us-west-2 us-west-2 "$TMPDIR/output.md"

grep -q 'regional-server ' "$TMPDIR/helm_diff_args.txt"
grep -q '/deployments/regional-server/\.\./charts/regional-server ' "$TMPDIR/helm_diff_args.txt"
grep -q '/values.yaml observability Regional Server' "$TMPDIR/helm_diff_args.txt"
grep -q -- '--set regionalServer.image.repository=repo/regionalserver' "$TMPDIR/helm_diff_args.txt"
grep -q -- '--set regionalServer.image.tag=v1.2.3' "$TMPDIR/helm_diff_args.txt"
grep -q -- '--set dataServer.image.repository=repo/data-server' "$TMPDIR/helm_diff_args.txt"
grep -q -- '--set dataServer.image.tag=v4.5.6' "$TMPDIR/helm_diff_args.txt"
test ! -e "$TMPDIR/kubectl_diff_calls.txt"
