.PHONY: install install-cli db db-tools migrate seed api dashboard check start clean register-project

COMPOSE = docker compose -f infra/docker-compose.yml --env-file .env

install:
	uv sync

## Symlink the custodian CLI into ~/.local/bin so it's on PATH system-wide
install-cli: install
	mkdir -p ~/.local/bin
	ln -sf "$(shell pwd)/.venv/bin/custodian" ~/.local/bin/custodian
	@echo "Installed: custodian → $$(readlink -f ~/.local/bin/custodian)"
	@echo "Make sure ~/.local/bin is on your PATH:"
	@echo "  echo 'export PATH=\"\$$HOME/.local/bin:\$$PATH\"' >> ~/.bashrc && source ~/.bashrc"

db:
	$(COMPOSE) up -d postgres

db-tools:
	$(COMPOSE) --profile tools up -d

migrate:
	uv run alembic upgrade head

seed:
	uv run python scripts/seed.py

api:
	uv run uvicorn api.main:app --reload --host 127.0.0.1 --port 8000

dashboard:
	cd dashboard && npm run dev

check:
	curl -sf http://127.0.0.1:8000/state/health | python3 -m json.tool

start: db
	sleep 3
	$(MAKE) migrate
	$(MAKE) api

## Register a project: make register-project DOMAIN=railiance PROJECT_PATH=/home/worsch/railiance
register-project:
	@test -n "$(DOMAIN)" || (echo "ERROR: DOMAIN is required. Usage: make register-project DOMAIN=<domain> PROJECT_PATH=<path>"; exit 1)
	@test -n "$(PROJECT_PATH)" || (echo "ERROR: PROJECT_PATH is required."; exit 1)
	scripts/register_project.sh "$(DOMAIN)" "$(PROJECT_PATH)"

clean:
	$(COMPOSE) down -v
