SHELL := /usr/bin/env bash

# Decrypt Hetzner token at runtime (requires your SOPS_AGE_KEY loaded locally)
HCLOUD_TOKEN := $(shell sops -d --extract '["ops"]["hcloud_token"]' inventory/group_vars/secrets.sops.yaml 2>/dev/null)

.PHONY: all apply tf-init tf-apply ansible destroy fmt check sops-edit sops-rotate

all: apply

fmt:
	terraform -chdir=terraform/hetzner fmt -recursive || true

tf-init:
	terraform -chdir=terraform/hetzner init

tf-apply: tf-init
	@if [ -z "$(HCLOUD_TOKEN)" ]; then echo "HCLOUD_TOKEN empty. Did you load your SOPS key and encrypt ops.hcloud_token?"; exit 1; fi
	@export HCLOUD_TOKEN=$(HCLOUD_TOKEN); \
	terraform -chdir=terraform/hetzner apply -auto-approve

ansible:
	cd ansible && ansible-playbook playbooks/bootstrap.yaml -u admin

apply: fmt tf-apply ansible

destroy:
	@if [ -z "$(HCLOUD_TOKEN)" ]; then echo "HCLOUD_TOKEN empty. Did you load your SOPS key?"; exit 1; fi
	@export HCLOUD_TOKEN=$(HCLOUD_TOKEN); \
	terraform -chdir=terraform/hetzner destroy -auto-approve

sops-edit:
	sops inventory/group_vars/secrets.sops.yaml

check:
	terraform -chdir=terraform/hetzner plan >/dev/null || true
	cd ansible && ansible-inventory --list >/dev/null
