Files
mimic-big/backend/Makefile
knacky 72a0e857a4 chore(backend): bootstrap Python 3.12+ project skeleton (B0.1)
- pyproject.toml with ruff + mypy strict + pytest + coverage >=70%
- Makefile with Docker/Podman auto-detect
- Multi-stage Dockerfile (python:3.12-slim-bookworm, non-root user)
- docker-compose.yml for Postgres dev DB
- alembic.ini wired to src/mimic/db/migrations
- scripts/postgres-init/00-roles.sql seeds the audit writer role
- .env.example documents every MIMIC_* var (no secrets committed)
2026-05-21 20:32:29 +02:00

81 lines
2.3 KiB
Makefile

# --- Mimic backend Makefile ------------------------------------------------
# Detects Docker / Podman automatically (NF-platform).
PY ?= python3.12
VENV ?= .venv
PIP := $(VENV)/bin/pip
PYTHON := $(VENV)/bin/python
PYTEST := $(VENV)/bin/pytest
RUFF := $(VENV)/bin/ruff
MYPY := $(VENV)/bin/mypy
ALEMBIC := $(VENV)/bin/alembic
FLASK := $(VENV)/bin/flask
# Container runtime auto-detect: Docker (preferred) or Podman rootless.
CONTAINER ?= $(shell command -v docker 2>/dev/null || command -v podman 2>/dev/null)
COMPOSE ?= $(shell command -v docker-compose 2>/dev/null || echo "$(CONTAINER) compose")
export FLASK_APP=mimic.app:create_app
.PHONY: help install lint fmt typecheck test test-int test-cov run \
db-up db-down db-migrate db-revision db-seed db-dump db-restore \
build clean
help:
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | \
awk 'BEGIN {FS=":.*?## "}; {printf " \033[36m%-20s\033[0m %s\n", $$1, $$2}'
install: ## Create venv and install dev dependencies
$(PY) -m venv $(VENV)
$(PIP) install --upgrade pip wheel
$(PIP) install -e ".[dev]"
lint: ## Ruff lint
$(RUFF) check src tests
fmt: ## Ruff format
$(RUFF) format src tests
$(RUFF) check --fix src tests
typecheck: ## Mypy strict
$(MYPY) src
test: ## Unit tests (SQLite)
$(PYTEST) tests/unit -v
test-int: ## Integration tests (testcontainers Postgres)
$(PYTEST) tests/integration -v -m integration
test-cov: ## Unit + integration with coverage report
$(PYTEST) --cov=mimic --cov-report=term-missing --cov-report=html
run: ## Run Flask dev server
$(FLASK) run --host 0.0.0.0 --port 5000 --debug
db-up: ## Start Postgres dev container
$(COMPOSE) up -d postgres
db-down: ## Stop Postgres dev container
$(COMPOSE) down
db-migrate: ## Apply migrations
$(ALEMBIC) upgrade head
db-revision: ## Generate migration (msg=...)
$(ALEMBIC) revision --autogenerate -m "$(msg)"
db-seed: ## Seed local dev data (TBD sprint 1)
@echo "TBD sprint 1"
db-dump: ## Manual DB dump (NF-state, R-O1)
$(VENV)/bin/mimic-cli db dump --out backups/mimic-$$(date +%Y%m%d-%H%M%S).sql
db-restore: ## Restore from dump (file=...)
$(VENV)/bin/mimic-cli db restore --file $(file)
build: ## Build wheel
$(PYTHON) -m build
clean:
rm -rf $(VENV) .pytest_cache .mypy_cache .ruff_cache htmlcov dist build *.egg-info