# 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 "[^<]*" || echo " title not found"