.PHONY: help install test lint run docker-build seed corpus-db

help: ## Show targets
	@grep -E '^[a-zA-Z_-]+:.*?##' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "  %-16s %s\n", $$1, $$2}'

install: ## Install runtime + dev deps into .venv (prefers python3.12)
	@PY=$$(command -v python3.12 || command -v python3); \
	$$PY -m venv .venv
	.venv/bin/pip install -U pip
	.venv/bin/pip install -r requirements-dev.txt

lint: ## Ruff lint (CI hard gate)
	ruff check .

test: ## Pytest (CI hard gate)
	pytest -q

corpus-db: ## Build world-names.sqlite3 from names-dataset (+ optional dumps)
	.venv/bin/pip install -q names-dataset
	.venv/bin/python scripts/import_names_db.py \
		$(if $(BULK),--bulk "$(BULK)",) \
		$(if $(HADLEY),--hadley "$(HADLEY)",)

run: ## Local uvicorn on :8094 (needs .env)
	@test -f .env || (echo "Copy .env.example to .env first" && exit 1)
	set -a && . ./.env && set +a && uvicorn stork.app:app --reload --host 127.0.0.1 --port 8094

seed: ## Seed example names (usage: make seed STORK_BOARD_ID=b_… [STORK_SEED_FILE=data/demo-names.example.json])
	@if [ -z "$(STORK_BOARD_ID)" ] && [ -z "$(STORK_INVITE)" ]; then \
		echo "Set STORK_BOARD_ID=b_… or STORK_INVITE=…"; exit 1; \
	fi
	STORK_URL="$(or $(STORK_URL),http://127.0.0.1:8094)" \
	STORK_BOARD_ID="$(STORK_BOARD_ID)" STORK_INVITE="$(STORK_INVITE)" \
	STORK_SEED_FILE="$(STORK_SEED_FILE)" \
		.venv/bin/python scripts/seed_names.py

create-board: ## Create empty board + print share URL (usage: make create-board [STORK_BOARD_TITLE='…'])
	STORK_URL="$(or $(STORK_URL),http://127.0.0.1:8094)" \
	STORK_BOARD_TITLE="$(or $(STORK_BOARD_TITLE),Name board)" \
		.venv/bin/python scripts/create_board.py

docker-build: ## Build local image
	docker build -t homelab-stork:latest .
