Comment fonctionne ce blog ?
— nanoc, meta, informatique — ~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
- h → Mon script qui remplace mon Rakefile
- list → Un autre mini-script pour me dire quels sont les articles en cours d’écriture, ceux parus, et ceux disponibles à la parution
- Rules → Défini comment compiler quoi et où l’écrire après
- content → Dossier où est tout ce qui sera compilé, et vu que j’ai tout mon site ou presque, il est pas vide…
- assets → La où il y a tous les… assets (genre css, js, fonts, …)
- blog → Les fichiers de https://blog.doshi.re
- posts → Là où vont les articles prêts à la parution
- posts/drafts → Là où vont les articles en cours d’écriture
- posts/published → Là où sont les articles parus
- home → Les fichiers de https://doshi.re
- latex → Les fichiers de https://latex.doshi.re
- wiki → Les fichiers de https://wiki.doshi.re (un peu à l’abandon mdr)
- layouts → Layouts ERB 1 dans lequel les trucs vont passer
- lib → La où vivent les helpers, des petites fonctions utilitaires, codées par moi ou pas
- nanoc.yaml → fichier de config du blog
- output → La où se trouve les fichiers compilés du blog
- tmp → Je sais pas trop
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 :
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.
-
Non, pas Epic Rap Battles of History ↩
Il n'y a pas de commentaire sur ce blog, donc si vous voulez réagir à cet article, n'hésitez pas à venir m'en parler sur le Fediverse, Twitter ou par mail. Des bisouxes !