sawsge

My simple static site generator for blogs or projects.

Installation

Sawsge is availible as a Gem and as an AUR package.

Install as a Gem: gem install sawsge

NOTE: When installing as a Gem, Pandoc must also be installed.

Install from the AUR: paru -S sawsge

Usage

Run sawsge [DIRECTORY] where [DIRECTORY] is the source directory root. If [DIRECTORY] is not provided, Sawsge will target ./

File Structure

In the source directory root should exist header.html, footer.html, and config.toml. Additional files may need to exist for different modes.

Config

Here's an example config for a project:

[general]
# For now this can only be a single directory, no
# subdirectories allowed!
out_dirname = "out"

# "blog" or "project"
mode = "project"

# If (header|footer)_filename is an empty string, no header
# or footer will be added to the rendered pages, although
# for now this will build a broken website.
header_filename = "header.html"
footer_filename = "footer.html"

# All external links will be given the `target=_blank`
# attribute, opening them in new tabs when clicked, unless
# the link has a user-set target.
external_links_target_blank = true

# A list of files, relative to the src root, to exclude from
# builds
ignore = ["README.md"]

[blog]
posts_dirname = "post"

General Operation

Sawsge makes all links on the site point to directories, so there is no index.html at the end of any URL (example.com/thing/index.html vs example.com/thing/). Sawsge will build your website to out_dirname in your config; make sure there are no files in there, as they will be deleted!

Blog Mode

Blog mode creates a special homepage with the title and a summary of each post, with latest posts at the top. In blog mode, sawsge will look for posts under posts_dirname in the config. In posts_dirname, each post should be in a directory specifying its date in YYYY/MM/DD format, e.g. /[posts_dirname]/2021/03/09/index.md. In its source, the post should include at least one <h1></h1> and one <summary></summary>HTML block. Both will be used to generate the summary on the front page.

Project Mode

Project mode is much simpler than blog mode. It performs no special handling with different files--each Markdown file will be generated as a plain page.