commit b02d9c37c85032786c8e54cbb4d1934423608aed
parent 15a1d4148c03ecfc87d0aa7d8d4c19638ba969a5
Author: Hugo Soucy <hugo@soucy.cc>
Date: Sun, 12 Mar 2017 11:44:38 -0400
Add a new text about the manuel task runner.
Diffstat:
1 file changed, 79 insertions(+), 0 deletions(-)
diff --git a/content/txt/bash/2017/03/manuel-taskrunner.md b/content/txt/bash/2017/03/manuel-taskrunner.md
@@ -0,0 +1,79 @@
+---
+title: Manuel un task runner en bash
+date: 2017-03-12
+datetime: 11:03:16
+template: default
+---
+
+Manuel un task runner en bash
+=============================
+
+[Manuel est une application bash (>= 4) pour créer des tâches automatisées](https://github.com/ShaneKilkelly/manuel). 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 coneption 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éé](https://github.com/hs0ucy/fakestache-ssg) avec
+bash et pandoc; il me parassait 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 foncitonnalités de bases. À ce jour, il n'y a ne que deux
+extensions officiels, mais vue que tout ça c'est des functions bash,
+il est facile d'en créer d'autre au besoin.
+
+Il y
+a entre autre
+[manuel-contrib-watch](https://github.com/ShaneKilkelly/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](https://github.com/hs0ucy/hugosoucycc/blob/master/manuelfile). Si
+vous avez des questions, n'hésiter pas à communiquer avec moi.