.DEFAULT_GOAL := help
SHELL := /usr/bin/env bash
COMPOSE := docker compose

.PHONY: help prep up down restart logs ps test reload clean

help: ## Show this help
	@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf "  \033[36m%-12s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)

prep: ## Re-inject SOA records into all zones (writes zones-prepared/)
	@./scripts/prepare-zones.sh

up: prep ## Start CoreDNS (prepares zones first)
	$(COMPOSE) up -d
	@sleep 2 && $(COMPOSE) logs --tail=20 coredns

down: ## Stop & remove the container
	$(COMPOSE) down

restart: ## Restart CoreDNS (does not re-prep zones)
	$(COMPOSE) restart coredns

reload: prep ## Re-prep zones; CoreDNS auto-plugin will pick changes up
	@echo "Zones re-prepared. CoreDNS reloads files every 30s (auto plugin)."

logs: ## Tail CoreDNS logs
	$(COMPOSE) logs -f coredns

ps: ## Show container status
	$(COMPOSE) ps

test: ## Smoke-test against a known zone (uses DNS_PORT from .env)
	@. ./.env && echo "Querying acrazy.org @ 127.0.0.1:$$DNS_PORT" && \
		dig @127.0.0.1 -p $$DNS_PORT acrazy.org SOA +short && \
		dig @127.0.0.1 -p $$DNS_PORT acrazy.org NS +short && \
		dig @127.0.0.1 -p $$DNS_PORT or.acrazy.org A +short

clean: down ## Remove containers + prepared zones
	rm -rf zones-prepared/*.zone
