title: Esthétique et API Je n’ai finalement [pas pu résister à une réécriture partielle](/david/stream/2015/01/06/) de mon outil dans le but d’avoir une API plus jolie tirant partie des [dernières possibilités de fabric](http://docs.fabfile.org/en/latest/usage/tasks.html) : :::bash $ fab -l Available commands: generate_all GENERATE ALL THE THINGS!!! WARNING: boolean param. caches.generate (Re)generate caches MD files into HTML files. caches.new Cache the given `url` into a MD and a HTML file. family.generate Generate the family history. notes.generate Generate notes and archives for the stream. notes.new Generate the template file to post a note. notes.publish Publish the daily note after generating the feed. pages.generate Generate all static pages. posts.generate Generate posts and archives for the blog. posts.publish Publish the article after generating the feed. server.commit Add/rm files and then commit with the `message`. server.deploy Push/pull the repository from the production server. server.errors Display latest 200 errors lines from production. server.infos Display infos (mail+web) about disk usage in prod. server.log Display access logs continuously from production. Pour initier cette note : :::bash $ fab notes.new:"Esthétique et API" [larlet@ssh.alwaysdata.com] Executing task 'notes.new' [localhost] local: open -a "iA Writer" "larlet.fr/david/stream/2015/01/16/index.md" Done. Pour la déployer : :::bash $ fab notes.publish [larlet@ssh.alwaysdata.com] Executing task 'notes.publish' Done: http://larlet.dev:8089/david/stream/2015/ Done: http://larlet.dev:8089/david/ Feed: ★ Livre et diffusion (2015-01-07) Feed: ★ Cours IUT : jQuery et Bonus (2015-01-06) Feed: ★ Publier, enseigner et cultiver (2015-01-03) Feed: ★ Rétrospective Mozilla (2014-12-27) Feed: ★ Père Noël (2014-12-22) Feed: Acheter des polices (2015-01-15) Feed: S’adapter à la luminosité ambiante (2015-01-14) Feed: Régulateur de consommation (2015-01-13) Feed: Teenagers, AirDrop et P2P (2015-01-12) Feed: Code et écriture (2015-01-11) Feed: Devenir conférencier (2015-01-10) Feed: Unanimisme émotionnel (2015-01-09) Feed: Kilian Jornet et Aconcagua (2015-01-08) Feed: Bouncer IRC et backlog (2015-01-07) Feed: Résister à la généralisation (2015-01-06) Feed: Cacher le Web (2015-01-05) Feed: Illettrisme technologique (2015-01-04) Feed: Écoutés en 2014 (2015-01-03) Feed: Économie de partage vs. économie de location (2015-01-02) Feed: Publication quotidienne (2015-01-01) [localhost] local: hg addremove adding larlet.fr/david/stream/2015/01/15/index.html adding larlet.fr/david/stream/2015/01/15/index.md [localhost] local: hg ci -m "Add new note" [localhost] local: hg push pushing to ssh://hg@bitbucket.org/david/larlet.fr searching for changes remote: adding changesets remote: adding manifests remote: adding file changes remote: added 1 changesets with 5 changes to 5 files [larlet@ssh.alwaysdata.com] run: hg pull -u -R /home/larlet/www INFO:ssh.transport:Connected (version 2.0, client OpenSSH_5.5p1) INFO:ssh.transport:Authentication (publickey) successful! INFO:ssh.transport:Secsh channel 1 opened. [larlet@ssh.alwaysdata.com] out: pulling from ssh://hg@bitbucket.org/david/larlet.fr [larlet@ssh.alwaysdata.com] out: searching for changes [larlet@ssh.alwaysdata.com] out: adding changesets [larlet@ssh.alwaysdata.com] out: adding manifests [larlet@ssh.alwaysdata.com] out: adding file changes [larlet@ssh.alwaysdata.com] out: added 1 changesets with 5 changes to 5 files [larlet@ssh.alwaysdata.com] out: 5 files updated, 0 files merged, 0 files removed, 0 files unresolved Done. Disconnecting from ssh.alwaysdata.com... done. Une doc. Deux lignes. Futile ? Certainement, mais c’est comme [un changement de police](/david/stream/2015/01/15/), ça contribue à l’amélioration d’une expérience d’écriture en la rendant plus fluide.