Files
pagasis/backend/Makefile
T
2025-10-15 23:45:32 -06:00

108 lines
3.5 KiB
Makefile

# Makefile para comandos comunes del proyecto
.PHONY: help install install-dev lint format test coverage clean run migrate shell
# Variables
PYTHON := python
PIP := pip
MANAGE := $(PYTHON) manage.py
# Colores para output
BLUE := \033[0;34m
GREEN := \033[0;32m
YELLOW := \033[1;33m
NC := \033[0m # No Color
help: ## Mostrar ayuda
@echo "$(GREEN)Comandos disponibles:$(NC)"
@echo ""
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " $(BLUE)%-20s$(NC) %s\n", $$1, $$2}'
@echo ""
install: ## Instalar dependencias de producción
@echo "$(YELLOW)Instalando dependencias de producción...$(NC)"
$(PIP) install -r requirements.txt
@echo "$(GREEN)✓ Dependencias instaladas$(NC)"
install-dev: install ## Instalar dependencias de desarrollo
@echo "$(YELLOW)Instalando dependencias de desarrollo...$(NC)"
$(PIP) install -r requirements-dev.txt
@echo "$(GREEN)✓ Dependencias de desarrollo instaladas$(NC)"
@echo ""
@echo "$(YELLOW)Instalando pre-commit hooks...$(NC)"
pre-commit install
@echo "$(GREEN)✓ Pre-commit hooks instalados$(NC)"
lint: ## Ejecutar linters (flake8, pylint, bandit)
@echo "$(YELLOW)Ejecutando análisis de código...$(NC)"
@bash scripts/lint.sh
format: ## Formatear código automáticamente (black, isort, autopep8)
@echo "$(YELLOW)Formateando código...$(NC)"
@bash scripts/format.sh
test: ## Ejecutar tests
@echo "$(YELLOW)Ejecutando tests...$(NC)"
pytest -v
coverage: ## Ejecutar tests con cobertura
@echo "$(YELLOW)Ejecutando tests con cobertura...$(NC)"
pytest --cov=. --cov-report=html --cov-report=term-missing
@echo ""
@echo "$(GREEN)✓ Reporte de cobertura generado en htmlcov/index.html$(NC)"
clean: ## Limpiar archivos temporales
@echo "$(YELLOW)Limpiando archivos temporales...$(NC)"
find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
find . -type f -name "*.pyc" -delete
find . -type f -name "*.pyo" -delete
find . -type f -name "*.coverage" -delete
find . -type d -name "*.egg-info" -exec rm -rf {} + 2>/dev/null || true
find . -type d -name ".pytest_cache" -exec rm -rf {} + 2>/dev/null || true
rm -rf htmlcov/ .coverage 2>/dev/null || true
@echo "$(GREEN)✓ Archivos temporales eliminados$(NC)"
run: ## Ejecutar servidor de desarrollo
@echo "$(YELLOW)Iniciando servidor de desarrollo...$(NC)"
$(MANAGE) runserver
migrate: ## Aplicar migraciones
@echo "$(YELLOW)Aplicando migraciones...$(NC)"
$(MANAGE) migrate
makemigrations: ## Crear migraciones
@echo "$(YELLOW)Creando migraciones...$(NC)"
$(MANAGE) makemigrations
shell: ## Abrir shell de Django
$(MANAGE) shell_plus --ipython || $(MANAGE) shell
superuser: ## Crear superusuario
$(MANAGE) createsuperuser
check: ## Verificar proyecto Django
@echo "$(YELLOW)Verificando proyecto...$(NC)"
$(MANAGE) check
collectstatic: ## Recolectar archivos estáticos
@echo "$(YELLOW)Recolectando archivos estáticos...$(NC)"
$(MANAGE) collectstatic --noinput
security: ## Verificar vulnerabilidades de seguridad
@echo "$(YELLOW)Verificando vulnerabilidades...$(NC)"
safety check
bandit -r . -c pyproject.toml
pre-commit-all: ## Ejecutar pre-commit en todos los archivos
@echo "$(YELLOW)Ejecutando pre-commit en todos los archivos...$(NC)"
pre-commit run --all-files
setup: install-dev migrate ## Setup inicial del proyecto
@echo ""
@echo "$(GREEN)✓ Setup completado$(NC)"
@echo ""
@echo "Próximos pasos:"
@echo " 1. Crea un superusuario: make superuser"
@echo " 2. Ejecuta el servidor: make run"
@echo " 3. Revisa la ayuda: make help"