Que es el Makefile?¶
Que es?¶
Un Makefile es una lista de atajos. En lugar de escribir:
escribes:
Un Makefile te permite definir comandos con nombre (llamados "targets") para que no tengas que memorizar comandos largos y complejos.
Por que lo usamos¶
No deberias necesitar recordar 30 comandos diferentes con sus banderas. El Makefile los recuerda por ti. Si quieres ejecutar los tests, escribes make test. Si quieres revisar el estilo del codigo, escribes make lint. Un comando, una tarea.
Tambien garantiza que todos los miembros del equipo ejecuten el mismo comando. Adios al "en mi maquina funciona" porque alguien uso banderas diferentes de pytest.
Los targets mas utiles¶
| Comando | Que hace |
|---|---|
make test |
Ejecuta todos los tests |
make test-fast |
Tests rapidos (omite los lentos) |
make test-coverage |
Tests con informe de cobertura |
make lint |
Revisa el estilo del codigo con ruff |
make lint-fix |
Corrige automaticamente problemas de estilo |
make typecheck |
Ejecuta mypy (verificador de tipos) |
make security |
Ejecuta bandit (escaneo de seguridad) |
make docs-serve |
Previsualiza la documentacion localmente |
make build |
Genera el paquete de distribucion |
Como se lee un Makefile¶
Un target se ve asi:
.PHONY: test-fast
test-fast: # nombre del target
pytest -m "not slow" -q # comando (identado con tabulador)
.PHONYle indica a Make que esto no es un archivo real -- que siempre lo ejecute.test-fast:es el nombre que escribes despues demake.- La linea siguiente es el comando a ejecutar. Debe estar identada con un tabulador, no con espacios.
Por que es bueno para quienes aprenden¶
Puedes contribuir a CGMPy sin conocer todas las herramientas del stack. Quieres verificar que tu codigo tiene el formato correcto? Ejecuta make lint. Quieres asegurarte de que no has roto nada? Ejecuta make test. El Makefile es tu red de seguridad -- ejecuta exactamente las mismas comprobaciones que CI ejecutara, asi que detectas problemas antes de que lleguen a una pull request.