un blog en Go
Sun, 12 May 2024 01:11:50 +0200Et voilà après avoir craqué contre Hugo je me suis lancé dans la création de mon propre blog. Ca fait un moment que Hugo me prenait déjà la tête avec la gestion des thèmes très fastidieuse et la configuration en fonction de ceux-ci. La goute d’eau est venu suite à une idée d’intégrer le flux RSS d’un projet perso sur mon blog et que Hugo puisse le rafraichir régulièrement.
Pour cela Hugo propose une fonction resources.GetRemote $url
à mettre dans un partial, par exemple :
{{ $url := printf "https://domain.tld/rss.xml?v=%d" now.Unix }}
{{ $cacheKey := 0 }}
{{ with resources.GetRemote $url (dict "key" $cacheKey) }}
Avec un l’option du cache à 0 on peut l’invalider. Ou carrément préciser le maxAge dans le fichier de config :
[caches]
[caches.getresource]
maxAge = 0
Et bien tout cela ne sert à rien ! Enfin si, cela ne sert qu’à savoir s’il faut refaire le cache lors du build au lancement de Hugo… Voir : https://discourse.gohugo.io/t/getjson-cache/23127. La seule solution pour rafraichir la ressource externe est de rebuilder le site et donc de re déployer 😑 Visiblement on est static ou on l’est pas…
J’ai donc commencé à chercher des alternatives (comme Zola mais qui ne répond pas au besoin), puis je suis tombé sur ce blog fait maison How I developed a markdown blog in Go and HTMX. Le code tient dans un fichier Go de 377 lignes 😮
Ca m’a bien inspiré pour tenter le dev d’un blog qui conviendrait à ce que je veux, c’est à dire un site qui pourrait régulièrement rafraichir un flux RSS intégré sur le site. Plus purement du static donc, mais toujours des fichiers markdown.
Alors ce que vous voyez sous les yeux est donc le résultat d’une session de quelques jours de code en Go, projet que j’ai baptisé Gibson (référence à William Gibson bien sûr). La grosse nouvelle c’est qu’il n’y a pas encore l’intégration de flux RSS 😆 mais l’idée est déjà d’arriver à obtenir ce que j’avais précédement ; il manque encore la gestion des tags et la recherche.
Pour le design il n’y a aucune chance que j’intègre une gestion de thème à la Hugo (ni même toutes ses fonctionnalités), cependant j’utilise Bulma et il est assez simple de modifier les templates (voir aussi Themes in Bulma).