# cuckoo-escapement docs — make targets follow the warehacking cookie-cutter.
#
# `make prod` builds the static site + brings up Caddy serving it.
# `make dev`  starts the Astro dev server with HMR behind Caddy.
# `make down` stops both.

SHELL := /usr/bin/env bash
.SHELLFLAGS := -eu -o pipefail -c
.DEFAULT_GOAL := help

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

.PHONY: prod
prod: ## Build + run the production docs container (Caddy serves dist/)
	docker compose up -d --build docs

.PHONY: dev
dev: ## Run the Astro dev server with HMR (--profile dev)
	docker compose --profile dev up --build docs-dev

.PHONY: down
down: ## Stop and remove the docs containers
	docker compose --profile dev down
	docker compose down

.PHONY: logs
logs: ## Tail logs (works for whichever profile is up)
	docker compose logs -f --tail=100

.PHONY: build
build: ## Build the static site WITHOUT bringing up Caddy (CI gate)
	docker compose build docs

.PHONY: shell
shell: ## Open a shell in the running dev container (debugging)
	docker compose exec docs-dev sh

# ---- Production deploy --------------------------------------------------
#
# `make deploy` SSHes to dell01 (where the docs run, behind the shared
# caddy-docker-proxy), has it pull origin/main from Gitea via the forwarded
# agent key, and rebuilds the container. Nothing persistent is provisioned.
#
# `git fetch origin` (bare) — NOT `git fetch origin main`, which only writes
# FETCH_HEAD, leaving origin/main unresolved so the reset fails on a fresh
# checkout. Override DEPLOY_HOST / DEPLOY_PATH for a different target.
# (see ~/.claude/references/warehacking.md).

DEPLOY_HOST ?= dell01
DEPLOY_PATH ?= warehack-ing/cuckoo-escapement

.PHONY: deploy
deploy: ## Pull origin/main on dell01 + rebuild the docs container
	@echo "==> deploying on $(DEPLOY_HOST):$(DEPLOY_PATH)"
	ssh -A $(DEPLOY_HOST) "cd $(DEPLOY_PATH) && git fetch --quiet origin && git reset --hard origin/main && cd docs-site && make prod"
	@echo "==> sanity check (title of a real page; bogus path should 404)"
	@curl -sS "https://escapement.warehack.ing/explanation/preempt-rt-made-it-worse/" | grep -oE "<title>[^<]*</title>" || echo "    title not found"
