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.

Fuentes馃敆