~rbdr/page

take gmi files and build static gemini and http pages.
d843a0b2 — Ruben Beltran del Rio a month ago
Add mac command
9e6d4cf2 — Ruben Beltran del Rio a month ago
Remove clang from page
a411ac34 — Ruben Beltran del Rio a month ago
Add the packaging steps + manual

clone

read-only
https://git.sr.ht/~rbdr/page
read/write
git@git.sr.ht:~rbdr/page

You can also use your local clone with git send-email.

#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 ../<directory_name>_html
  4. your gemini without frontmatter output is in ../<directory_name>_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.