.PHONY: init plan apply format

# Define vault_env function to set up vault environment
define vault_env
	@export VAULT_ADDR="https://vault.service.consul:8200" && \
	export VAULT_TOKEN=$$(vault write -field=token auth/approle/login role_id=$$VAULT_ROLEID) && \
	export CONSUL_HTTP_TOKEN=$$(vault read -format=json consul_root/au/syd1/creds/terraform-vault | jq '.data.token')
endef

init:
	@$(call vault_env) && \
	terragrunt run --all --non-interactive init -- -upgrade

plan: init
	@$(call vault_env) && \
	terragrunt run --all --parallelism 4 --non-interactive plan

apply: init
	@$(call vault_env) && \
	terragrunt run --all --parallelism 2 --non-interactive apply

format:
	@echo "Formatting OpenTofu files..."
	@tofu fmt -recursive .
	@echo "Formatting Terragrunt files..."
	@terragrunt hcl fmt
