watchexec🔗
watchexec
es una herramienta que ejecuta un comando
cada vez que detecta una modificación dentro de alguna ubicación en el sistema de archivos local.
Lo anterior permite, entre otros muchos casos:
- Ejecutar pruebas unitarias cada vez que guardemos cambios en el editor de texto o IDE.
- Dar formato o analizar (mediante análisis estático o búsqueda de code smells) el código fuente cada vez que guardemos cambios en el editor de texto o IDE.
- Reiniciar la ejecución de algún proceso, un servidor de HTTP por ejemplo, cada vez que guardemos cambios en el editor de texto o IDE.
Como ejemplo, teniendo la carpeta $HOME/proyecto/docs
con mkdocs
(para la generación de documentación) y $HOME/proyecto/Makefile
con el siguiente contenido:
PORT = 9090
generate-docs :
mkdocs build --clean --quiet
preview-docs :
-pkill -f 'thttpd -p $(PORT)'
@thttpd -p $(PORT) -T UTF-8 -nor -M 0 -l /dev/null -d site
@echo "http://localhost:$(PORT)"
all : generate-docs preview-docs
.DEFAULT_GOAL := all
.PHONY : generate-docs preview-docs
.SILENT : preview-docs
Se puede ejecutar lo siguiente para que cada vez que se presente alguna modificación en los archivos
de Markdown, dentro de docs
, se re-genere la carpeta site
y se reinicie el servidor HTTP thttpd
,
de tal manera que http://localhost:9090 muestre el contenido actualizado de site
:
[nihilipster@localhost:~/proyecto]$ watchexec --filter docs make
Algunas alternativas a watchexec
serían
fswatch,
watchman,
direvent y
entr.