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.
Run tests with make test.
If you have tarpaulin, you can also run make coverage to get
coverage information.
Distribution of Builds
Builds are available at build.r.bdr.sh. The linux builds are
generated automatically by the CI: Unstable builds are built from the main
branch, and stable releases are built from tags.
For mac, the process is still manual, since the commands need to be run from
a macos machine by running make mac for unstable builds, and
make -e tag=M.m.p for stable builds.