.DEFAULT_GOAL := help

.PHONY: help install run migrate makemigrations collectstatic superuser shell \
	test coverage lint format messages compilemessages \
	precommit-install precommit

help: ## Muestra esta ayuda
	@grep -E '^[a-zA-Z0-9_-]+:.*## ' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*## "}; {printf "  \033[36m%-20s\033[0m %s\n", $$1, $$2}'

install: ## Instala dependencias (incluidas las de desarrollo)
	uv sync --group dev

run: ## Arranca el servidor de desarrollo
	uv run python manage.py runserver 0.0.0.0:8000

migrate: ## Aplica las migraciones pendientes
	uv run python manage.py migrate

makemigrations: ## Genera migraciones a partir de cambios en los modelos
	uv run python manage.py makemigrations

collectstatic: ## Recopila los archivos estáticos
	uv run python manage.py collectstatic --noinput

superuser: ## Crea un superusuario (para /admin/)
	uv run python manage.py createsuperuser

shell: ## Abre una shell de Django (django-extensions shell_plus si está instalado)
	uv run python manage.py shell_plus

test: ## Ejecuta la suite de tests
	uv run pytest

coverage: ## Ejecuta los tests con cobertura
	uv run pytest --cov

lint: ## Comprueba estilo/errores con ruff (no modifica nada)
	uv run ruff check .

format: ## Aplica el formateador de ruff (ver [tool.ruff.format] en pyproject.toml)
	uv run ruff format .

messages: ## Regenera las cadenas traducibles (es/en)
	uv run python manage.py makemessages -l es -l en

compilemessages: ## Compila las traducciones (.po -> .mo)
	uv run python manage.py compilemessages

precommit-install: ## Instala el hook de pre-commit en este repo
	uv run pre-commit install

precommit: ## Ejecuta todos los hooks de pre-commit sobre el repo entero
	uv run pre-commit run --all-files
