.PHONY: bootstrap validate vault-init terraform-init terraform-plan terraform-apply check-terraform-inputs

KUBE_CONTEXT ?=
TF_ROOT ?=
BACKEND_CONFIG ?=
TF_DIR = iac/terraform/live/dev-k3s/$(TF_ROOT)
PLAN_FILE ?= $(CURDIR)/.local/terraform-plans/dev-k3s-$(TF_ROOT).tfplan

bootstrap:
	@test -n "$(KUBE_CONTEXT)" || (echo "KUBE_CONTEXT is required" >&2; exit 1)
	./hack/bootstrap-argocd.sh --context "$(KUBE_CONTEXT)"

validate:
	./hack/validate.sh

vault-init:
	./hack/vault-init.sh init

check-terraform-inputs:
	@case "$(TF_ROOT)" in \
	  vault-foundation|vault-workloads|vault-database) ;; \
	  *) echo "TF_ROOT must be vault-foundation, vault-workloads, or vault-database" >&2; exit 1 ;; \
	esac
	@test -f "$(BACKEND_CONFIG)" || (echo "BACKEND_CONFIG must point to a readable backend file" >&2; exit 1)

terraform-init: check-terraform-inputs
	terraform -chdir="$(TF_DIR)" init -input=false -reconfigure -backend-config="$(abspath $(BACKEND_CONFIG))"

terraform-plan: terraform-init
	@mkdir -p "$(dir $(PLAN_FILE))"
	@umask 077; terraform -chdir="$(TF_DIR)" plan \
	  -input=false \
	  -lock-timeout=5m \
	  -out="$(PLAN_FILE)"

terraform-apply: terraform-init
	@test "$(APPROVE_APPLY)" = "dev-k3s/$(TF_ROOT)" || \
	  (echo "Set APPROVE_APPLY=dev-k3s/$(TF_ROOT) to continue" >&2; exit 1)
	@test -f "$(PLAN_FILE)" || \
	  (echo "Run terraform-plan first; approved plan is missing: $(PLAN_FILE)" >&2; exit 1)
	terraform -chdir="$(TF_DIR)" apply -input=false -lock-timeout=5m "$(PLAN_FILE)"
	@rm -f "$(PLAN_FILE)"
