Manuel un task runner en bash
Manuel est une application bash (>= 4) pour créer des tâches automatisées. Il s'inspire des outils comme Grunt ou Gulp qui, eux sont écrit en Node.js (JavaScript).
Dans mon cas, j'ai décidé d'utiliser Manuel dans la conception et la maintenance de mon site personnel, puisque celui-ci est fait avec un générateur de site web statique que j'ai moi-même créé avec bash et pandoc; il me paraissait donc logique que tout le “workflow” tourne autour de bash ou de d'autres outils Unix.
À l'instar de Grunt ou Gulp, Manuel ne fait rien d'extraordinaire en soit, sinon de regrouper et d'enchaîner les tâches routinières de façon séquentielle et de les exécuter en une seule commande dans le terminal.
Sinon Manuel contient un mécanisme d'extension qui permet d'étendre les fonctionnalités de bases. À ce jour, il n'y a ne que deux extensions officiels, mais vue que tout ça c'est des fonctions bash, il est facile d'en créer d'autre au besoin.
Il y
a entre autre
manuel-contrib-watch pour
surveiller en temps réel les changements dans un répertoire. Pour ma
part, je me sers de cette extension pour surveiller les modifications
aux fichiers *.scss
et .js
pour compiler et mettre à jour en temps
réel le thème de mon site web.
Voici un exemple de mon utilisation de manuel-contrib-watch
dans mon
manuelfile
:
# Concatenate and minify styles sheets (./frontend).
# Then export with rsync
function update_css () {
./frontend
rsync -avmh "./$ASSETS/css/" "./$PUBLICHTML/css/"
}
# Concatenate and minify scripts (./frontend).
# Then export with rsync
function update_js () {
./frontend
rsync -avmh "./$ASSETS/js/" "./$PUBLICHTML/js/"
}
# Watch CSS and JS files
# Then update them
function watch_assets_change () {
declare -A actions=(
[".*.css$"]="update_css"
[".*.js$"]="update_js"
)
manuel_watch "./static/dev/"
}
Puis dans le terminal on fait la commande manuel watch_assets_change
pour lancer le “watch”.
Voici mon manuelfile au complet. Si vous avez des questions, n'hésiter pas à communiquer avec moi.