arbret/Makefile
2025-12-20 23:09:46 +01:00

89 lines
2.3 KiB
Makefile

.PHONY: install-backend install-frontend install setup-hooks backend frontend db db-stop db-ready db-seed dev test test-backend test-frontend test-e2e typecheck generate-types generate-types-standalone check-types-fresh check-constants
-include .env
export
install-backend:
cd backend && uv sync --all-groups
install-frontend:
cd frontend && npm install
install: install-backend install-frontend setup-hooks
setup-hooks:
git config core.hooksPath .githooks
backend:
cd backend && uv run uvicorn main:app --reload
frontend:
cd frontend && npm run dev
db:
docker compose up -d db
db-stop:
docker compose down
db-clean:
docker compose down -v
db-ready:
@docker compose up -d db
@echo "Waiting for PostgreSQL to be ready..."
@until docker compose exec -T db pg_isready -U postgres > /dev/null 2>&1; do \
sleep 1; \
done
@docker compose exec -T db psql -U postgres -tc "SELECT 1 FROM pg_database WHERE datname = 'arbret_test'" | grep -q 1 || \
docker compose exec -T db psql -U postgres -c "CREATE DATABASE arbret_test"
@echo "PostgreSQL is ready"
db-seed: db-ready
cd backend && uv run python seed.py
dev:
$(MAKE) db-seed
cd backend && uv run uvicorn main:app --reload & \
cd frontend && npm run dev & \
wait
test-backend: db-clean db-ready
cd backend && uv run pytest -v
test-frontend:
cd frontend && npm run test
test-e2e: db-clean db-ready
./scripts/e2e.sh
test: check-constants check-types-fresh test-backend test-frontend test-e2e
typecheck: generate-types-standalone
cd backend && uv run mypy .
cd frontend && npx tsc --noEmit
generate-types:
cd frontend && npm run generate-api-types
generate-types-standalone: db-seed
@echo "Starting backend for type generation..."
@cd backend && uv run uvicorn main:app --port 8000 --log-level warning & \
BACKEND_PID=$$!; \
sleep 3; \
cd frontend && npm run generate-api-types; \
EXIT_CODE=$$?; \
kill $$BACKEND_PID 2>/dev/null || true; \
exit $$EXIT_CODE
check-types-fresh: generate-types-standalone
@if git diff --quiet frontend/app/generated/api.ts 2>/dev/null; then \
echo "✓ Generated types are up to date"; \
else \
echo "✗ Generated types are stale. Run 'make generate-types-standalone' and commit."; \
git diff frontend/app/generated/api.ts; \
exit 1; \
fi
check-constants:
@cd backend && uv run python validate_constants.py