Doshi's blog

Thème:

Comment fonctionne ce blog ?

, , — ~5mn de lecture

nanoc c’est chouette parce que c’est très minimaliste donc on peut lui faire faire ce qu’on veut. nanoc c’est pas chouette parce que c’est très minimaliste donc faut faire beaucoup de choses soit-même.

Bonjour.

Au départ je voulais faire ce billet quand j’ai ouvert mon blog. Sauf que ça fait un an et le processus s’est considérablement complexifié, et du coup j’ai eu 2-3 drafts successifs de cet article :’).

Mais go présenter le blog à ce jour, avec un peu d’histoire.

Déjà, le seul point, je crois, qui n’a pas changé c’est que j’utilise nanoc comme générateur de site statique. C’est un machin en Ruby, parce que y’a 1 an j’étais un fanboy de Ruby (j’aime toujours beaucoup le langage, mais maintenant j’en ai marre des systèmes de types dynamiques, mais c’est une autre histoire). J’ai failli switch sur Hakyll un jour, sauf que la grosse flemmasse s’est imposée et finalement je reste là dessus.

Mais trève de bavardage, comment que c’est quoi le flux de travail

Écrire un article

La ça a relativement peu changé. J’utilise toujours Vim pour écrire mes articles. Nan j’déconne c’est le seul truc qui a pas changé.

Au début, je créais mon article à la main. Ensuite pendant longtemps j’avais un Rakefile, qui faisait que je créais mes articles avec un rake new["Titre"] et ça me générait un truc comme ça :

    ---
    title: "Titre"
    created_at: YYYY-MM-DD
    kind: article
    tags: []
    published: false
    ---

    <!-- more -->

Le more c’est la séparation entre ce qui est affiché dans l’index et ce qui ne l’est pas. Maintenant j’ai aussi un truly_created_at pour me permettre de voir combien de temps j’ai mis à écrire le billet. Et maintenant j’ai aussi dégagé mon Rakefile pour un script shell maison parce que je me sentais limité pour rien.

Ensuite, h (c’est le nom du script) pour compiler et voir le site en live (ça fait juste un nanoc && nanoc view, en gros)

Et une fois que je suis content du résultat, pour publier : h deploy (Ca modifie la date de l’article à la date du jour, ça compile tout et ça envoie. Je me suis fait avoir 1000 fois à oublier de modifier la date ou de compiler, donc maintenant c’est automatique.)

Et voilà un nouvel article !

Mais dis-moi Doshi, comment que ça se présente un blog avec nanoc ?

Et beh j’vais te le dire, patience !

Structure

Petits trucs en plus

Bon déjà, j’avais dégagé le git, mais il est revenu parce que j’ai fait une grosse boulette qui m’a fait perdre du temps à réparer donc fini les conneries

Ensuite, j’ai codé la fonction qui compte le temps de lecture approximatif (je l’ai piquée dans le code source de Hugo mais chut)

J’ai des filtres qui transforment (( et )) par une parenthèse visuelle et un autre qui remplace : nom : (sans espaces) par l’émoji correspondant, genre comme ça : :blobaww:

J’ai une fonction qui me renvoie la racine a utiliser selon que je compile en local ou pour la “prod”, qui a beaucoup complexifié la “codebase” depuis que je gère tout mon site et plus uniquement mon blog

J’avais une fonction qui transformait une date en format humain genre “3 novembre 2018” mais je m’en sers plus

Mais j’aurais beaucoup de ménage à faire dans ce dossier parce que y’a beaucoup de trucs qui se sont accumulés qui ne servent plus à rien. Mais rappellez vous le début : la grosse flemmasse.

“Bonus” : le script h

Je lui ai implémenté plusieurs petites fonctions : - new (pour créer un article) - compile (pour… compiler le blog) - deploy (pour envoyer le blog sur le serveur de ‘production’) - view (pour lancer le serveur web local pour voir les changements) - rm (pour supprimer un article) - publish (pour publier un article particulier, que je sélectionne par un appel à fzf) - list (pour lister les articles publiés, les articles finis et les articles pas finis)

Y’a notamment deploy et publish qui se marchent un peu dessus, mais j’ai pas encore réfléchi à comment mieux faire

Après j’ai un main tout simple (si on est habitué à Bash, sinon ça pique les yeux sévère) :

if [[ $# -eq 0 ]]; then # si je lance juste h, ça compile avec les drafts et ça view
	compile draft
	view
else # sinon si je fais h cmd arg1 arg2… il me lance la fonction cmd avec les arguments arg1 arg2…
	command="$1"
	shift
	$command "$@"
fi

Bon allez à la prochaine. Et si vous voulez utiliser nanoc aussi, bah vous savez où me trouver pour des questions et/ou de l’aide.

  1. Non, pas Epic Rap Battles of History 


Si vous voulez commenter, il faut suivre @Doshirae@comments.doshi.re sur le fediverse, et répondre au post correspondant à ce billet. C'est un peu expérimental, mais je paie les pots cassés pour que ça devienne top