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

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/adopt-drhouse-managed.sh"

tmpdir="$(mktemp -d)"
trap 'rm -rf "$tmpdir"' EXIT

kubectl() {
  case "$*" in
    "config current-context")
      echo "arn:aws:eks:us-west-2:227896186585:cluster/o11y-dev-us-west-2-byoc-0303"
      ;;
    *)
      echo "unexpected kubectl call: $*" >&2
      return 1
      ;;
  esac
}
export -f kubectl

adoption_validate_cluster_context

cat >"$tmpdir/before.yaml" <<'YAML'
kind: StatefulSet
metadata:
  labels:
    app.kubernetes.io/managed-by: Helm
    helm.toolkit.fluxcd.io/name: diagnosis-query
    helm.toolkit.fluxcd.io/namespace: ops-system
spec:
  replicas: 2
YAML

cat >"$tmpdir/after.yaml" <<'YAML'
kind: StatefulSet
metadata:
  labels:
    app.kubernetes.io/managed-by: something-else
spec:
  replicas: 2
YAML

normalize_adoption_manifest "$tmpdir/before.yaml" >"$tmpdir/before.norm.yaml"
normalize_adoption_manifest "$tmpdir/after.yaml" >"$tmpdir/after.norm.yaml"
diff -u "$tmpdir/before.norm.yaml" "$tmpdir/after.norm.yaml"

helm() {
  printf '%s\n' "$@" >"$tmpdir/helm.args"
}
export -f helm

mkdir -p "$tmpdir/chart-without-defaults"
touch "$tmpdir/env-values.yaml" "$tmpdir/image-values.yaml"
render_scoped_release "diagnosis-query" "$tmpdir/chart-without-defaults" "$tmpdir/env-values.yaml" "$tmpdir/image-values.yaml" >/dev/null

cat >"$tmpdir/expected.helm.args" <<EOF
template
diagnosis-query
$tmpdir/chart-without-defaults
-f
$tmpdir/env-values.yaml
-f
$tmpdir/image-values.yaml
EOF

diff -u "$tmpdir/expected.helm.args" "$tmpdir/helm.args"
