Files
orion/Makefile
2025-09-13 21:48:18 +02:00

171 lines
4.7 KiB
Makefile

# Comprehensive Makefile for LetzShop API
.PHONY: install install-test install-dev install-all dev test test-unit test-integration test-coverage test-fast test-slow test-auth test-products test-stock lint format check docker-build docker-up docker-down migrate clean check-tools setup setup-test
# Check if required tools are installed
check-tools:
@command -v black >/dev/null 2>&1 || { echo >&2 "black is required but not installed. Run 'make install-dev' first."; exit 1; }
@command -v isort >/dev/null 2>&1 || { echo >&2 "isort is required but not installed. Run 'make install-dev' first."; exit 1; }
@command -v flake8 >/dev/null 2>&1 || { echo >&2 "flake8 is required but not installed. Run 'make install-dev' first."; exit 1; }
@command -v mypy >/dev/null 2>&1 || { echo >&2 "mypy is required but not installed. Run 'make install-dev' first."; exit 1; }
# Production setup
install:
pip install -r requirements.txt
# Development setup
install-dev-deps:
pip install -r requirements-dev.txt
# Testing setup
install-test-deps:
pip install -r tests/requirements-test.txt
# Development server
dev:
uvicorn main:app --reload --host 0.0.0.0 --port 8000
# Testing commands
test:
pytest tests/ -v
test-unit:
pytest tests/ -v -m unit
test-integration:
pytest tests/ -v -m integration
test-coverage:
pytest tests/ --cov=app --cov=models --cov=utils --cov=middleware --cov-report=html --cov-report=term-missing
test-fast:
pytest tests/ -v -m "not slow"
test-slow:
pytest tests/ -v -m slow
# Specific test files
test-auth:
pytest tests/test_auth.py -v
test-products:
pytest tests/test_products.py -v
test-stock:
pytest tests/test_stock.py -v
test-marketplace:
pytest tests/test_marketplace.py -v
test-admin:
pytest tests/test_admin.py -v
# Code quality
lint: check-tools
@echo "Running flake8..."
flake8 . --max-line-length=88 --extend-ignore=E203,W503 --exclude=venv,__pycache__,.git
@echo "Running mypy..."
mypy . --ignore-missing-imports --exclude venv
format: check-tools
@echo "Running black..."
black . --exclude venv
@echo "Running isort..."
isort . --skip venv
# Combined format and lint
check: format lint
# Combined test with coverage and linting
ci: format lint test-coverage
# Database migrations
migrate-create:
alembic revision --autogenerate -m "$(message)"
migrate-up:
alembic upgrade head
migrate-down:
alembic downgrade -1
migrate-reset:
alembic downgrade base
alembic upgrade head
# Docker commands
docker-build:
docker-compose build
docker-up:
docker-compose up -d
docker-down:
docker-compose down
docker-logs:
docker-compose logs -f api
docker-restart: docker-down docker-up
# Production deployment
deploy-staging:
docker-compose -f docker-compose.staging.yml up -d
deploy-prod:
docker-compose -f docker-compose.prod.yml up -d
# Clean up
clean:
rm -rf htmlcov/
rm -rf .pytest_cache/
rm -rf .coverage
rm -rf .mypy_cache/
find . -type d -name "__pycache__" -exec rm -rf {} +
find . -type f -name "*.pyc" -delete
find . -type d -name "*.egg-info" -exec rm -rf {} +
# Development workflow shortcuts
setup: install install-dev-deps install-test-deps migrate-up
@echo "Development environment setup complete!"
full-test: format lint test-coverage
@echo "Full test suite completed!"
# Help command
help:
@echo "Available commands:"
@echo " install - Install production dependencies"
@echo " install-dev-deps - Install development dependencies"
@echo " install-test-deps - Install testing dependencies"
@echo " setup - Complete development setup"
@echo " dev - Start development server"
@echo ""
@echo "Testing:"
@echo " test - Run all tests"
@echo " test-unit - Run unit tests only"
@echo " test-integration - Run integration tests only"
@echo " test-coverage - Run tests with coverage report"
@echo " test-fast - Run fast tests (exclude slow ones)"
@echo " test-slow - Run slow tests only"
@echo " full-test - Format, lint, and test with coverage"
@echo ""
@echo "Code Quality:"
@echo " format - Format code with black and isort"
@echo " lint - Run linting with flake8 and mypy"
@echo " check - Format and lint code"
@echo " ci - Full CI pipeline (format, lint, test)"
@echo ""
@echo "Database:"
@echo " migrate-up - Run database migrations"
@echo " migrate-down - Rollback last migration"
@echo " migrate-reset - Reset and rerun all migrations"
@echo ""
@echo "Docker:"
@echo " docker-build - Build Docker containers"
@echo " docker-up - Start Docker containers"
@echo " docker-down - Stop Docker containers"
@echo " docker-restart - Restart Docker containers"
@echo ""
@echo "Cleanup:"
@echo " clean - Remove test artifacts and cache files"