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
- Stand on the directory you want to turn into a page
- run page
- your html output is in ../
_html - 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.