# Ai Resume - build entry points.
#
# `make validate` is the content gate: it is what CI and deploy.sh call.
# It exits 0 only on a clean content tree.
#
# `make build` is the site gate: it generates the templ components, compiles the
# two small binaries and writes the pre-rendered site into dist/. One binary
# (bin/resume-server) serves the whole site; there is no bundler and no Node.

PYTHON ?= python3
VALIDATOR := $(PYTHON) tools/validate_content.py
GO ?= go
TEMPL ?= templ

BIN := bin
DIST := dist

.PHONY: build dist generate dev test validate validate-self-test fmt vet clean help

help:
	@echo "make build            templ generate, compile bin/, no dist"
	@echo "make dist             build, then pre-render content into dist/"
	@echo "make dev              pre-render into dist/ and serve it on 127.0.0.1:8096"
	@echo "make generate         run templ generate (generated files are not committed)"
	@echo "make test             go test ./... plus the validator self-test"
	@echo "make validate         validate content/** front-matter against the frozen schema"
	@echo "make fmt vet          gofmt / go vet over cmd and internal"
	@echo "make clean            remove bin/ and dist/"

build: generate
	@mkdir -p $(BIN)
	$(GO) build -trimpath -buildvcs=false -o $(BIN)/resume-build ./cmd/build
	$(GO) build -trimpath -buildvcs=false -o $(BIN)/resume-server ./cmd/server

dist: build
	@$(BIN)/resume-build --dist $(DIST)

dev: dist
	@RESUME_DIST=$(DIST) $(BIN)/resume-server

generate:
	@command -v $(TEMPL) >/dev/null || { echo "templ is not on PATH; run this inside 'nix develop'"; exit 1; }
	@$(TEMPL) generate

test: generate validate-self-test
	@$(GO) test ./...

validate:
	@$(VALIDATOR)

validate-self-test:
	@$(VALIDATOR) --self-test

fmt:
	@gofmt -l -w cmd internal

vet:
	@$(GO) vet ./...

clean:
	@rm -rf $(BIN) $(DIST)
