,---. ,--. ,--. ' .-' ,---.,--.--.`--' ,---. ,-' '-. ,---. `. `-. | .--'| .--',--.| .-. |'-. .-'( .-' .-' |\ `--.| | | || '-' ' | | .-' `) `-----' `---'`--' `--'| |-' `--' `----' `--'
I use some things to that when I enter "gemlog" in the terminal, I am able to title my log, tag it (with limited tags), and have a link to the new log populate in various places - the gemlog digest, the atom feed, and, if I have tagged it with something (e.g. 'cfa'), then it will be linked on that page too.
There are 4 things that make this work for me. First, a 'blank' atom feed, second a preformatted header .txt for the log, third a preformatted digest page and fourth a bash script.
I'll paste all of these below. The bash script could do with some optimisations. I learned more about sed so I reckon there's a good few lines and at least one variable that could be removed! It's all a learning process :D
This is the atom feed of all my Gemlogs.
These are handy for feed-readers etc - the Gemini browser Amphora has a feed-reader baked in that works really well. I have a link to Amphora in "links".
Below is the 'blank' feed I started with:
<?xml version='1.0' encoding='UTF-8'?> <feed xmlns="http://www.w3.org/2005/Atom"> <id>gemini://gemini.ctrl-c.club/~semaphore/gemlog/digest.gmi</id> <title>Semaphore's Gemlog</title> <updated>2021-03-15T00:00:00+00:00</updated> <author> <name>gemini.ctrl-c.club/~semaphore</name> <email>semaphore@ctrl-c.club</email> </author> <link href="gemini://gemini.ctrl-c.club/~semaphore/gemlog/atom.xml" rel="self"/> <link href="gemini://gemini.ctrl-c.club/~semaphore/gemlog/digest.gmi" rel="alternate"/> <generator uri="gemini://gemini.ctrl-c.club/~semaphore" version="0.0.1">World's Shittest Script, by Semaphore</generator> </feed>
This is the header which is inserted to the top of gemlog we've just created:
This is the gemlog digest, which will have a link to the new entry inserted to the top of the list.
The digest file, again with entries added.
This is a copy of the bash script I run, obviously it has my filepaths etc.
Firstly, $backslashheaven was me ragequitting on a problem, but I've since learn more about sed so I'll get around to cleaning it up one day and update it here too. But not today! Basically, the script;
1. Asks for the title of the post (e.g. 'I Sent Morse For The First Time' or 'Martial Arts Grading Soon!"'), then asks for a filename (e.g. 'sendmorse' or 'grading'), then asks for if there's any tags (e.g. 'radio' or 'ma').
2. The script then creates a .gmi of the filename I specified, then adds the preformatted header, the date, the title and at the end it adds a link to go back to the digest page. Because this is is done with echo >>, it's formatted for gemini already.
3. It updates the atom feed, by;
a) removing the </feed> at the end of the .xml, and removing the line timestamping when the feed was last updated;
b) adding an entry at the bottom of the .xml with all the necessary stuff - the title, actual location in the internet of the log, the date and other things;
c) re-adding the </feed> to the end of the .xml now that the new entry is in, and reinserting a new timestamp showing when the atom feed was updated (i.e. just now);
4. Adding a link for the new gemlog post to the digest page, which includes the date & title of the log, with the most recent gemlog post on top.
5. If a tag was specified, then the new post will also be linked at the bottom of the relevant page (for instance, if it's a tag about firefighting then it well be added to the main CFA page). This should hopefully allow pages that would otherwise be a bit static to be more dynamic, having some usual or generic stuff, but then with any new developments also added added at the bottom, by way of a link to a gemlog.
6. Last, but certainly not least, Gedit opens to actually write the post. Once I'm done writing I save the file. When I learn vim I'll use that instead of gedit. Until then I'll use gedit. Get off my back, you're not my real mum/dad!
7. When I'm all done and happy I rsync the whole pod to both tilde.pink and ctrl-c.club (which will include any new gemlogs, new firecalls, or any other changes).
8. The rsync is acheived with a different bash script that was fun to write and does probably too many things ;) But it updates all servers and timestamps the changes on both, as well as updates the timestamp on the landing page I have up at https://ctrl-c.club/~semaphore