aboutsummaryrefslogtreecommitdiff

page

A static website generator for exactly 1 use case.

"I have a bunch of gemini files that I want to serve as-is, but I also want to generate some HTML"

How to use

  1. Stand on the directory you want to turn into a page
  2. run page
  3. your html output is in ../_html
  4. your gemini without frontmatter output is in ../_gemini

So for example:

$ pwd
/home/rbdr/web/website
$ page
$ ls ..
website/
website_html/
website_gemini/

Front Matter

You can add some optional front matter. We'll look at the two first lines that start with ---

The format is:

--- title: the title of the page
--- description: a description

This only works if they are the first lines of the page.

Local Path Translation

Links that end with .gmi will be replaced with .html unless they specifically start with gemini:

Layouts

page expects a file called _layout.html in the root. It expects three placeholders:

  • {{ content }} the generated HTML from parsing the gemini text files.
  • {{ title }} the frontmatter title or an empty string.
  • {{ description }} the frontmatter description or an empty string.

Hidden folders

Hidden folders are copied as well, we only make an exception for .git/, and .gitignore which are explicitly ignored. This is handy for folders like .well-known, but could cause unwanted behavior if there's other hidden files in the directory.

What happens to files that aren't gemini?

They're copied as-is.

Building

This project is built using cargo. A makefile is provided to run common tasks.

Build dev version with make or make build.

Build release with make -e profile=release or make -e profile=release build.