What is swx?

swx is a tool to generate a static website from a file tree written in markdown, txt2tags or any other markup language.

It does'nt require any other tool except usal commands (cp, sed...) and the markup parser.

Inspired by sw, swx will generate you html pages, create links between them in a menu. You cas use simple css and templates that will be included in your pages.

Features

Install

Download files here here and untar the archive.

Using

Simple run :

  ./swx directory_containing_website
  

then, push you site the way you prefer with mercurial, git, rsync or even ftp

Configuration

To configure, edit swx.conf

You can change uppercase variables to fit your needs

Example

  mkdir dossier
  cd dossier
  wget http://3hg.toile-libre.org/swx/swx.tgz
  tar xvzf swx.tgz
  cd swx
  mkdir monsite
  vim monsite/index.md
  vim monsite/page1.md
  mkdir monsite/dossier1
  vim monsite/dossier1/index.md
  
  ./swx/swx monsite 
  

Appears monsite.static containing every pages converted to html and a new file swx.log containing the list of news pages (used later)

RSS feed

Use swx_rss to generate feed.xml

  ./swx_rss > DESTDIR/feed.xml
  

Replace DESTDIR by the path to the output directory

Site map

Generate a list of pages in your site with

      ./swx_plan DESTDIR > DESTDIR/Divers/map.html
  

And replace of course : DESTDIR

Sitemap generator

      ./swx_sitemap DESTDIR > DESTDIR/sitemap.xml
  

Then, you can compress it :

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

Don’t forget to edit robots.txt

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

Makefile

Example Makefile to edit to fit your needs:

  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 $(SOURCEDIR) -exec touch {} \;
  	make all
  serve:
  	cd $(DESTDIR) && python3 -m http.server && x-www-browser http://localhost:8000

Then, just run :

The end

Most of script can be improved, and simplified.

Avoid weird file names (use detox!).