Tinylog autosubscription

This blog entry was ported from my gemsite, so it follows a slightly different format than I've been using here. The date on it is also wrong, but it's the date under which it was listed on my gemlog and I can't find an older one recorded anywhere.

Tangential preface

Before I get into the meat of this post: in the past I've been pretty hesitant to add entries to my gemlog. Most of what I want to write about seems to be about modifying the systems I use. Rather than write a discrete entry in my gemlog, I've just been quietly updating my "systems" pages. I wanted to make it easy to learn about the latest "refinement" of any particular system, as well as any major versions that came before, by visiting a single page.

Writing something in my gemlog for every tiny change made to those pages seemed redundant, so I haven't been doing this, but I'm going to start trying now. This should make it easier to dig into the evolution of each version of my systems while also aiding discoverability on platforms like Antenna that favor content presented chronologically.

The "meat" of this post

I maintain a tinylog:

gemini://lyk.so/tiny.gmi

I use gtl to subscribe to the tinylogs of others:

https://git.bacardi55.io/bacardi55/gtl

bacardi55 keeps a public record of known tinylogs:

https://codeberg.org/bacardi55/gemini-tinylog-rfc/raw/branch/main/Known-tinylogs.md

I want to automatically subscribe to new tinylogs when they're added to that document. To that end, I wrote the following script which I run periodically:

#!/usr/bin/env sh

set -e

cd ~/.config/gtl

temp="$(mktemp -d)"
trap 'rm -fr "$temp"' EXIT INT HUP

# Ensure subs file is sorted
cat subs | sort > "$temp/sorted"
mv "$temp/sorted" subs

# Ensure a "blocked" file exists
touch blocked

curl -s https://codeberg.org/bacardi55/gemini-tinylog-rfc/raw/branch/main/Known-tinylogs.md 
| grep "* gemini://" 
| sed "s/^* //g" 
| sort 
> "$temp/known"

comm -13 blocked "$temp/known" > "$temp/new-subs-file"
comm -13 subs "$temp/new-subs-file" > "$temp/new-logs"

if [ "$(cat "$temp/new-logs")" != "" ]; then
  echo "Subscribing to:"
  cat "$temp/new-logs"
else
  echo "No new tinylogs."
fi

mv "$temp/new-subs-file" subs

In short, it adds to your ~/.config/gtl/subs file any new URL and alias pairs in Known-tinylogs.md that don't match any lines in your ~/.config/gtl/blocked file.