~rbdr/page

take gmi files and build static gemini and http pages.
3f1aa0b6 — Ruben Beltran del Rio 6 days ago
Update version of gema_texto
f5ac7b8e — Ruben Beltran del Rio 10 days ago
Remove no longer necessary code
f08e8d64 — Ruben Beltran del Rio 15 days ago
Bump version

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.

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.