.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 {} +