Prosody IM Static Site Generator

Introduction

This is a simple static site generator for https://prosody.im/. The pages were migrated from our old DokuWiki instance, including history, into Markdown files in a Mercurial repository.

Requirements

For building

Theme

Building

make
Builds the entire site
make dev
Builds pages with stylesheet paths adjusted for local viewing. If there are changed or newly added files, only those are built.

Special files

Apart from GNUmakefile which contains the rules and relationships between source files and finished HTML pages, there’s _template.html which is the HTML template that the source Markdown files are combined with into HTML pages.

The page _dirindex.md also has some special treatment, as it is meant for the Nginx Fancy Index module to produce directory listings. Because of how that module needs separate header and footer files, after _dirindex.html is built, sed is used to split it into _dirindex_header.html and _dirindex_footer.html.

Serving

Because there were no .html file extensions in Dokuwiki, all links are broken unless some rewrite tricks are used.

For nginx, it goes something like this:

location / {
    index index.html start.html;
    try_files $uri.html $uri $uri/ =404;

    location ~* (/.+)/$ {
        try_files $1$guess_type $1.html $uri $uri.html $uri/ =404;
    }
}