# Makefile для удобной работы с проектом .PHONY: help install dev-up dev-down test lint format migrate createsuperuser shell help: @echo "Доступные команды:" @echo "" @echo "🔧 Установка и настройка:" @echo " make install - Установка зависимостей" @echo "" @echo "🐳 Docker управление:" @echo " make dev-up - Запуск разработческого окружения (Docker)" @echo " make dev-down - Остановка разработческого окружения" @echo " make logs - Просмотр логов (Docker)" @echo "" @echo "🧪 Тестирование:" @echo " make test - Запуск тестов (по умолчанию все)" @echo " Примеры:" @echo " make test # Все тесты" @echo " make test TARGET=user # Только user app" @echo " make test TARGET=test_models # Только модели" @echo "" @echo "🔍 Качество кода:" @echo " make lint - Проверка кода линтерами" @echo " make format - Форматирование кода" @echo " make type-check - Проверка типов" @echo " make security-check - Проверка безопасности" @echo " make pre-commit - Запуск pre-commit hooks" @echo "" @echo "🗄️ База данных:" @echo " make migrate - Выполнение миграций Django" @echo " make createsuperuser - Создание суперпользователя" @echo "" @echo "🛠️ Утилиты:" @echo " make shell - Запуск Django shell" @echo " make setup-dev - Настройка окружения разработки" @echo " make clean - Очистка временных файлов" install: uv pip install -r requirements.txt uv pip install -r requirements-dev.txt dev-up: docker-compose up -d @echo "Сервисы запущены. Приложение доступно по адресу: http://localhost:8000" dev-down: docker-compose down # Универсальная команда для тестирования с поддержкой аргументов # Использование: # make test # Все тесты # make test TARGET=user # Тесты user app # make test TARGET=models # Тесты моделей # make test TARGET=views # Тесты представлений # make test TARGET=serializers # Тесты сериализаторов # make test TARGET=services # Тесты сервисов test: @if [ "$(TARGET)" ]; then \ echo "🧪 Запуск тестов: $(TARGET)"; \ python run_tests_simple.py $(TARGET); \ else \ echo "🧪 Запуск всех тестов..."; \ python run_tests_simple.py; \ fi lint: @echo "🔍 Проверка кода линтерами..." ruff check src/ black --check src/ isort --check-only src/ @echo "✅ Линтинг завершен" format: @echo "🎨 Форматирование кода..." black src/ isort src/ ruff check --fix src/ @echo "✅ Форматирование завершено" migrate: @echo "🗄️ Выполнение миграций..." cd src && python manage.py makemigrations cd src && python manage.py migrate createsuperuser: @echo "👤 Создание суперпользователя..." cd src && python manage.py createsuperuser shell: @echo "🐚 Запуск Django shell..." cd src && python manage.py shell logs: @echo "📋 Просмотр логов..." docker-compose logs -f # Дополнительные команды для тестирования test-cov: @echo "🧪 Запуск тестов с покрытием..." python run_tests_simple.py --coverage test-fast: @echo "🚀 Быстрые тесты (без медленных)..." python run_tests_simple.py --fast test-parallel: @echo "⚡ Параллельный запуск тестов..." python run_tests_simple.py --parallel=auto test-failfast: @echo "❌ Тесты с остановкой при первой ошибке..." python run_tests_simple.py --failfast # Дополнительные команды для качества кода type-check: @echo "🔍 Проверка типов с mypy..." mypy src/ security-check: @echo "🔒 Проверка безопасности..." bandit -r src/ -f json -o bandit-report.json || bandit -r src/ pre-commit: @echo "🔧 Запуск pre-commit hooks..." pre-commit run --all-files # Установка и настройка setup-dev: @echo "⚙️ Настройка окружения разработки..." pre-commit install @echo "✅ Окружение настроено" clean: @echo "🧹 Очистка временных файлов..." find . -type f -name "*.pyc" -delete find . -type d -name "__pycache__" -delete rm -rf *.log rm -rf htmlcov/ rm -rf .coverage rm -rf coverage.xml rm -rf bandit-report.json rm -rf .pytest_cache/ rm -rf .mypy_cache/ rm -rf tests/__pycache__/ rm -rf tests/apps/__pycache__/ rm -rf tests/apps/user/__pycache__/ @echo "✅ Очистка завершена"