swx, c'est quoi?

swx permet de créer un site statique à partir d'une arborescence de fichiers écrits au format txt2tags ou markdown. Notez toutefois que n'importe quel autre convertisseur et langage markup, (pandoc…) peut être utilisé.

Mis à part ce convertisseur, aucun outil spécial n'est nécessaire, on n'utilise que les commandes de base du système (sed, cut, echo...)

Il s'agit en fait d'un kit de scripts qui ont pour chacun une tâche précise. “Diviser pour mieux régner” qu'ils disaient… Au moins, chaque script fait son boulot, et le fait bien.

Inspiré par sw, swx générera vos pages html, créera des liens entre elles sous forme de menu, et au lieu d'utiliser des modèles avec jinja, vous pouvez utiliser des simples feuilles de style css et préciser au script des morceaux de html que vous voudriez voir dans chaque page.

Fonctionnalités

Installation

Téléchargez tous les fichiers présents ici

Installez de quoi traiter votre langage markup (markdown, discount, txt2tags…)

Utilisation

Le script se lance simplement ainsi, dans le répertoire qui contient le dossier contenant votre site :

  ./swx repertoire_contenant_le_site
  

Ensuite, libre à vous de copier votre site ou le mettre à jour de la façon que vous préférez

Configuration

La configuration se déroule dans le fichier swx.conf

Vous pouvez modifier le contenu des variables (en majuscule) pour définir:

Exemple d'utilisation

C'est parti, voyons en quelques étapes comment utiliser toutes les fonctionnalités de swx.

Tout d'abord, on va créer un dossier pour pouvoir travailler :

  mkdir dossier
  cd dossier
  

On télécharge swx, on le décompresse :

  wget http://git.yeuxdelibad.net/swx.tgz
  tar xvzf swx.tgz
  

On crée un nouveau dossier qui contiendra notre site, puis on y crée quelques pages

  mkdir monsite
  vim monsite/index.md
  vim monsite/page1.md
  mkdir monsite/dossier1
  vim monsite/dossier1/index.md
  

On génère une première fois notre site :

  ./swx monsite 
  

Apparaît alors un dossier monsite.static qui contient toutes les pages converties en html, et un nouveau fichier swx.log qui contient la liste des nouvelles pages (ça nous servira plus tard).

Ajout d'un flux rss

Pour ajouter un flux rss, on va créer un fichier feed.xml à la racine du site.

On utilise le script swx_rss fournit avec swx ainsi :

  ./swx_rss > DESTDIR/feed.xml
  

Remplacez DESTDIR par le dossier qui contiendra le site. Dans notre exemple, c'est monsite.static

Ajout d'un page type blog

Vous pouvez créer une page de type blog, contenant les articles récents. Il faut lancer :

  ./swx_blog DESTDIR/page.html

Si le fichier page.html contient "%%%BLOG%%%" (ou ce que vous aurez définit dans la configuration), alors cette ligne sera remplacée par la liste des articles récents.

Ajout d'une page de plan de site

Pour générer un plan de votre site que les visiteurs pourront utiliser afin de le parcourir, vous pouvez utiliser le script swx_plan fournit avec swx.

Pour l'utiliser :

      ./swx_plan DESTDIR > DESTDIR/Divers/Plan_du_site.html
  

Remplacez DESTDIR par le dossier qui contiendra le site. Dans notre exemple, c'est monsite.static

N'hésitez pas à éditer le script pour modifier l'apparence de la page générée. Il utilise par défaut le style.css de votre site.

Ajout d'une page de plan de site lisible par les robots

Tout simplement, pour créer un sitemap lisible par les moteurs de recherche :

      ./swx_sitemap DESTDIR http://yoursite.com > DESTDIR/sitemap.xml
  

Que vous pouvez compresser ensuite ainsi :

      gzip --best -c DESTDIR/sitemap.xml > DESTDIR/sitemap.gz
  

N'oubliez pas de rajouter dans le fichier robots.txt ceci :

  User-agent: *
  Disallow:
  Sitemap: http://votredomaine.net/sitemap.gz
  

Automatiser le tout

Vous pouvez soit utiliser un script appelant les commandes précédentes, ou bien un fichier Makefile, qui vous permettra de faire tout ça avec simplement la commande make.

Exemple de fichier Makefile, à adapter selon le chemin de vos fichiers (variables DESTDIR, SOURCEDIR, et le nom du dossier contenant le site (ici Rendez-vous_sur_Arrakis)) :

  SOURCEDIR=$(CURDIR)/example
  DESTDIR=$(CURDIR)/example.static
  
  all:
  	./swx $(SOURCEDIR)
  	./swx_gopher $(SOURCEDIR)
  	./swx_sitemap  $(DESTDIR) > $(DESTDIR)/sitemap.xml
  	gzip --best -c $(DESTDIR)/sitemap.xml > $(DESTDIR)/sitemap.gz
  	./swx_plan $(DESTDIR) > $(DESTDIR)/siteplan.html
  	./swx_rss > $(DESTDIR)/feed.xml
  	./swx_blog $(DESTDIR)/index.html
  clean:
  	rm -rf *.static
  	rm swx.log
  force:
  	find Rendez-vous_sur_Arrakis -exec touch {} \;
  	make all
  serve:
  	cd $(DESTDIR) && python3 -m http.server && x-www-browser http://localhost:8000

Voici ce que vous pourrez faire avec ce fichier présent dans votre dossier contenant swx :

Le mot de la fin

Évitez les fichiers avec des noms bizarres, des espaces… Pour vous en débarrasser, pensez à la commande detox (paquet debian du même nom).