2020-12-16
Towards a proper FlightLog
#flightlog
I will readily admit that I have been fiddling with gemini for quite a while. Inspiration was taken from the capsules of you fellow Geminauts, for example:
emilis: for the Makefile powered capsule:
gemini://tilde.team/~emilis/2020/11/16-first-post.gmi
local copy
Alex Schröder for the worked example on tags:
gemini://alexschroeder.ch/
So "Thank You" for sharing!
This FlightLog is run with modest effort:
- Posts reside in a subdirectory per year, the files are named "YYYYmmdd-title.gmi".
- Posts are written with my favourite editor using a template.gmi file (indented here to prevent "???" from showing up as a tag). "???" indicates places to edit:
# date ???
## title ???
=> /tag-index.gmi tags: ???
text ???
= >/index.gmi Home
- The index is generated with a short shell script:
bin/gem-index.sh
- Entries are listed with the newest items on top of the list.
- It seems the generated index should conform to the gemini style feed file.
gemini://gemini.circumlunar.space/docs/companion/subscription.gmi
- I decided to create a "tag-index.gmi". Tags are specified below the sub-title, the line itself being a link to the tag index. These lines are extracted by (you guessed it) another shell script. All tags are collected, then the relevant links are searched for and added to the list. No, this is not optimized for performance and might be a little slow on a few thousand entries ... But so far, it works.
bin/gem-tags.sh
- The afore mentioned scripts are called via a simple Makefile, they produce the complete file tree beneath ./posts.
- Another target in the Makefile (publish) will rsync the tree to a ./site directory, local or elsewhere.
Makefile
- All posts shall have a reference to the site index as their last line.
- The content is served up with agate at this time:
gemini://gem.limpet.net/agate/
https://github.com/mbrubeck/agate
- As clients I use elpher and kristall:
https://thelambdalab.xyz/elpher/
https://github.com/MasterQ32/kristall
More things to contemplate:
- Adding explicit licenses to scripts, images, text.
- How to best serve non .gmi files (think source code).
- Limiting the number of entries in the index.gmi to 25 or so, keep /all/ entries in a separate archive.gmi.
- Add a public key and a signed checksums file to indirectly sign the content.
Cheers,
~ew
Home