LGBT : Let's Go, Blog This
lgbt est un script permettant de gérer un blog statique. Un site statique ne présente aucun danger en terme de sécurité contrairement à un site écrit en PHP, et nécessite moins de puissance de calcul sur le serveur.
Il est écrit entièrement en shell avec des commandes présentes de bases sur un système UNIX (OpenBSD par exemple). Il ne nécessite donc pas l'installation de dépendances particulières mis à part un convertisseur markdown.
Le script traite toute l'arborescence d'un site. Il copie tous les fichiers (images, vidéos) et convertit les pages écrites avec la syntaxe markdown en html. Un modèle (template) est utilisé pour garder une forme cohérente sur tout le site.
La première "génération" est la plus longue. Ensuite, seules les pages ajoutées ou modifiées sont converties/copiées, ce qui rend les performances plus que raisonnables.
Voyons un peu plus en détail ce que fait lgbt :
- Les pages converties contiennent une mention du dossier dans lesquelles elles sont. Cela permet de reproduire un système de "tag".
- Les pages "index.md" dans un dossier contiennent une liste de toutes les pages dudit dossier. C'est donc très pratique pour le cas où on souhaite voir tous les "tags" (vois ci-dessus).
- Un fichier feed.atom est construit pour que les visiteurs suivent les nouveautés.
- Une page archive est générée. Elle contient des liens vers toutes les pages de votre site. De plus, elle comporte un champ de recherche pour filtrer les résultats, ainsi qu'un champ de recherche pour chercher sur votre site avec le moteur Duckduckgo.
- Une liste des pages est conservée dans le dossier de destination (._lgbt_filelist). C'est ce dernier que vous devrez modifier si vous souhaitez mettre en avant certaines pages.
- Les pages/dossiers dont le nom commence par "_" ne sont pas traitées.
- Le contenu des fichiers sources est inséré dans un modèle définit dans la configuration.
Utilisation
Récupérez la dernière version de lgbt ici :
Décompressez l'archive dans un dossier.
Éditez le fichier lgbt.conf à votre guise, ainsi que le fichier modèle "lgbt.template".
Créez votre site dans un dossier "source". Vous pouvez faire des arborescences de fichiers tant que vous voulez. Lorsque vous avez terminé, lancez lgbt dossier_source. Un dossier "dossier_source.static" est alors créé : il contient votre nouveau site. La prochaine fois que lgbt sera exécuté, il ne s'occupera que des nouveaux fichiers.
Configuration
- LISTALL : L'URL relative à la racine de votre site de la page qui contiendra la liste de toutes les pages avec champs de recherche.
- LISTALLTITLE : Vous pouvez décider du nom à donner à cette page.
- CONVERTER : La commande à lancer pour convertir les pages en markdown.
- EXT : L'extension des fichiers markdown sans le point ".".
- MAX : Le nombre maximum de nouvelles à afficher dans le flux ATOM et sur la première page du site.
- AUTHOR : L'auteur du site, utile pour le flux ATOM.
- EMAIL : L'email de l'auteur pour le flux ATOM. Ça peut rester vide.
- FIRST_CREATION : Date de première création du site au format YYYY-MM-DD pour le flux ATOM.
Dans le fichier modèle "template", vous pouvez insérer toutes les variables citées ci-dessus tant qu'elles sont écrites sous la forme ${VARIABLE}. Elles ne sont pas toutes intéressantes, c'est pourquoi il en existe certaines autres si vous en avez besoin :
- ${DATE} : La date de génération de la page.
- ${TIME} : L'heure à laquelle la page a été générée.
- ${TAG} : Le dossier (étiquette) dans lequel figure la page. Il s'agit d'un lien vers l'index de ce dossier pour lister les pages classées à cet endroit.
- ${MAIN} : Cette variable est un peu spéciale. C'est à cet endroit que sera inséré le contenu de la page, fruit de la conversion markdown.
BUGS
Merci de les signaler.
Le script a été entièrement développé et utilisé sous OpenBSD. Il est donc possible que de légères différences soient présentes sur un système GNU malgré toute mon attention.
FAQ
Suis-je obligé d'utiliser markdown ?
Que nenni. Si la syntaxe markdown n'est pas votre tasse de thé, vous pouvez tout à fait utiliser un autre convertisseur. Veillez à bien modifier la configuration pour adapter les variables suivantes :
CONVERTER='' # Le programme pour convertir les pages EXT="md" # Extension des fichiers à convertir en html
Quel convertisseur markdown choisir ?
Par ordre de préférence :
- cmark : respecte les critères commonmark.
- discount : très rapide.
- lowdown profite de pledge, mais gère mal le code html intégré.
- md2html.awk : pas plus rapide, mais qui ne nécessite aucune installation externe. En effet, seul awk, livré sur tous les UNIX est requis. Il faut juste modifier la première ligne pour pointer vers votre awk (sous OpenBSD, c'est /usr/bin/awk).
- smu, utilisé par https://suckless.org.
- markdown.pl, l'original.
D'où vient l'idée ?
J'avais développé swx, mais il ne convenait pas tellement à un blog, plus à un simple site statique. Et puis j'ai vu le travail de Roman Zolotarev : ssg que j'ai trouvé excellent de simplicité. Un mélange des deux a donné lgbt.
Tu sais que LGBT ça veut aussi dire autre chose ?
Oui, et ça ne devrait pas être un problème.