Makefile
Rama main · réplica de lectura del repositorio original.
.PHONY: dev up down test backend-test frontend-test services-install services-test typecheck prepare release-check release-rehearsal version-check backup verify-backup restore-test backend-check dependency-check
BACKEND_PYTHON := $(if $(wildcard backend/.venv/bin/python),cd backend && .venv/bin/python,cd backend && uv run --locked --extra dev --extra sdrf python)
BACKEND_PYTEST := $(if $(wildcard backend/.venv/bin/pytest),cd backend && .venv/bin/pytest,cd backend && uv run --locked --extra dev --extra sdrf pytest)
SERVICE_PYTHON := services/.venv/bin/python
MSCONVERT_CLI_SOURCE ?= ../msconvert-cli
MZMLPY_SOURCE ?= ../mzmlpy
SPXTACULAR_SOURCE ?= ../spxtacular
RELEASE_ENV ?= release/.env
TEST_JOBS ?= 3
prepare:
mkdir -p data/storage data/scratch imports
dev: prepare
docker compose up --build
up: prepare
docker compose up -d --build
down:
docker compose down
test: version-check dependency-check
+$(MAKE) --output-sync=target -j$(TEST_JOBS) backend-test frontend-test services-test
dependency-check:
python3 scripts/check_dependencies.py
version-check:
python3 scripts/check_version.py
backend-check:
$(BACKEND_PYTHON) -m ruff check --config pyproject.toml src tests ../scripts/check_dependencies.py
$(BACKEND_PYTHON) -m mypy
backend-test: backend-check
$(BACKEND_PYTEST)
frontend-test:
cd frontend && npm test -- --run && npm run typecheck && npm run lint && npm run build
services-install:
uv venv --allow-existing --python 3.14 services/.venv
test -f "$(MSCONVERT_CLI_SOURCE)/pyproject.toml"
test -f "$(MZMLPY_SOURCE)/pyproject.toml"
test -f "$(SPXTACULAR_SOURCE)/pyproject.toml"
uv pip install --constraint constraints.txt --python $(SERVICE_PYTHON) "$(MSCONVERT_CLI_SOURCE)" "$(MZMLPY_SOURCE)" "$(SPXTACULAR_SOURCE)" services/agent services/converter services/extractor services/mcp services/webhooks
services-test: services-install
PYTHONPATH=services/agent/src $(SERVICE_PYTHON) -m unittest discover -s services/agent/tests
PYTHONPATH=services/converter/src $(SERVICE_PYTHON) -m unittest discover -s services/converter/tests
PYTHONPATH=services/extractor/src $(SERVICE_PYTHON) -m unittest discover -s services/extractor/tests
PYTHONPATH=services/mcp/src $(SERVICE_PYTHON) -m unittest discover -s services/mcp/tests
PYTHONPATH=services/webhooks/src $(SERVICE_PYTHON) -m unittest discover -s services/webhooks/tests
typecheck:
cd frontend && npm run typecheck
release-check: version-check
docker compose --env-file "$(if $(wildcard $(RELEASE_ENV)),$(RELEASE_ENV),/dev/null)" -f release/compose.yaml config --quiet
release-rehearsal: version-check
scripts/release-rehearsal.sh
backup:
test -n "$(BACKUP_DIR)"
scripts/backup.sh "$(BACKUP_DIR)"
verify-backup:
test -n "$(BACKUP_DIR)"
scripts/verify-backup.sh "$(BACKUP_DIR)"
restore-test:
test -n "$(BACKUP_DIR)"
test -n "$(RESTORE_DIR)"
scripts/restore-test.sh "$(BACKUP_DIR)" "$(RESTORE_DIR)"