.PHONY: help db dev css seed migrate test lint shell superuser collectstatic sync-whynot-design

.DEFAULT_GOAL := help

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

db: ## Start PostgreSQL via Docker (skips if already reachable on :5432)
	@if nc -z localhost 5432 2>/dev/null; then \
		echo "✓ DB bereits erreichbar auf :5432 — kein Docker-Start nötig"; \
	else \
		docker compose -f docker-compose.dev.yml up -d; \
	fi

dev: ## Start Django dev server on :9000
	uv run manage.py runserver 0.0.0.0:9000

css: ## Start Tailwind CSS watcher (Vite, rebuild on change)
	npm run dev

seed: ## Load dev seed data — users, one Ausschreibung, Lose, etc. (idempotent)
	uv run manage.py seed_dev

superuser: ## Create a Django superuser for /admin/ access
	uv run manage.py createsuperuser

migrate: ## Generate and apply all pending migrations
	uv run manage.py makemigrations
	uv run manage.py migrate

test: ## Run the full pytest test suite
	uv run pytest

lint: ## Run ruff (style) and mypy (types)
	uv run ruff check .
	uv run mypy vergabe_teilnahme/

shell: ## Open a Django shell (shell_plus if available)
	uv run manage.py shell_plus 2>/dev/null || uv run manage.py shell

collectstatic: ## Collect static files into staticfiles/ (production step)
	uv run manage.py collectstatic --noinput

sync-whynot-design: ## Re-vendor whynot-design CSS+tokens from the pinned ref
	./scripts/sync-whynot-design.sh
