.PHONY: help install dev update fmt lint typecheck test test-cov run docker-build docker-up docker-down clean

help:
	@echo "Targets:"
	@echo "  install       - install runtime + dev deps in current env"
	@echo "  dev           - run FastAPI app with autoreload"
	@echo "  update        - git pull + install deps + migrate db + run dev server"
	@echo "  fmt           - format code with ruff"
	@echo "  lint          - lint with ruff"
	@echo "  typecheck     - run mypy"
	@echo "  test          - run pytest"
	@echo "  test-cov      - run pytest with coverage"
	@echo "  docker-build  - build api image"
	@echo "  docker-up     - start docker-compose stack"
	@echo "  docker-down   - stop docker-compose stack"

install:
	python -m pip install --upgrade pip
	pip install -e ".[dev]"
	pre-commit install || true

dev:
	uvicorn ocr_sprint.main:app --reload --host 0.0.0.0 --port 8000

update:
	@echo "[1/4] Pulling latest code..."
	git pull
	@echo "[2/4] Installing/updating dependencies..."
	pip install -e ".[dev]"
	@echo "[3/4] Running database migrations..."
	alembic upgrade head
	@echo "[4/4] Starting dev server..."
	uvicorn ocr_sprint.main:app --reload --host 0.0.0.0 --port 8000

fmt:
	ruff format src tests
	ruff check --fix src tests

lint:
	ruff check src tests
	ruff format --check src tests

typecheck:
	mypy src

test:
	pytest

test-cov:
	pytest --cov --cov-report=term-missing

docker-build:
	docker compose build

docker-up:
	docker compose up -d

docker-down:
	docker compose down

clean:
	rm -rf .pytest_cache .mypy_cache .ruff_cache .coverage htmlcov build dist *.egg-info
	find . -type d -name __pycache__ -exec rm -rf {} +
