renames capsule -> gemini

This commit is contained in:
2026-06-18 19:59:58 +01:00
parent f71fbdafac
commit 2d89475f0b
22 changed files with 6 additions and 6 deletions
+2
View File
@@ -0,0 +1,2 @@
[*]
max_line_length = 99999
+8
View File
@@ -0,0 +1,8 @@
.certificates
content/logs/microlog.gmi
content/logs/longlog.gmi
content/logs/loglog.gmi
tmp-build-loglog-*
comitium-data/feed.gmi
comitium-data/subscriptions.gmi
comitium-data/comitium.json
+34
View File
@@ -0,0 +1,34 @@
COMITIUM_DATA := comitium-data
TEMPLATES_DIR := templates
MICROLOG_HEADER := $(TEMPLATES_DIR)/microlog-header.gmi
LONGLOG_HEADER := $(TEMPLATES_DIR)/longlog-header.gmi
LOGLOG_HEADER := $(TEMPLATES_DIR)/loglog-header.gmi
MICROLOG_ENTRIES := $(wildcard microlog/*)
LONGLOG_ENTRIES := $(wildcard content/logs/longlog/*)
LOGLOG_TARGET := content/logs/loglog.gmi
FEED_TARGET := $(COMITIUM_DATA)/subscriptions.json $(COMITIUM_DATA)/feed.gmi $(COMITIUM_DATA)/subscriptions.gmi
FEED_OUTPUTS := $(FEED_TARGET) $(COMITIUM_DATA)/subscriptions.json $(COMITIUM_DATA)/feed.gmi $(COMITIUM_DATA)/subscriptions.gmi
MICROLOG_TARGET := content/logs/microlog.gmi
MICROLOG_OUTPUTS := $(MICROLOG_TARGET) $(wildcard content/logs/microlog/*)
LONGLOG_TARGET := content/logs/longlog.gmi
.DELETE_ON_ERROR:
all: $(MICROLOG_TARGET) $(MICROLOG_OUTPUTS) $(LONGLOG_TARGET) $(LOGLOG_TARGET) $(FEED_OUTPUTS)
$(MICROLOG_TARGET): $(wildcard microlog/*) $(MICROLOG_HEADER)
bash ./build_microlog.bash
$(LONGLOG_TARGET): $(LONGLOG_ENTRIES) $(LONGLOG_HEADER)
bash ./build_longlog.bash
$(LOGLOG_TARGET): $(MICROLOG_TARGET) $(LONGLOG_TARGET) $(LOGLOG_HEADER)
bash ./build_loglog.bash
$(FEED_TARGET): $(COMITIUM_DATA)/feeds.txt
rm -f $(COMITIUM_DATA)/comitium.json
while read feed; do \
comitium add --data "$(COMITIUM_DATA)" $$feed; \
done <$(COMITIUM_DATA)/feeds.txt
clean:
rm -rf $(MICROLOG_OUTPUTS) $(LONGLOG_TARGET) $(LOGLOG_TARGET) $(FEED_OUTPUTS)
+131
View File
@@ -0,0 +1,131 @@
#!/bin/bash
TMP="tmp-build-loglog-$(date +%s%N)"
LOGLOG="content/logs/loglog.gmi"
LOGLOG_HEADER="templates/loglog-header.gmi"
new_filename()
{
DATE="$1"
mkdir -p "$TMP/$DATE"
N=0
while [[ -f "$TMP/$DATE/$N" ]]; do
N=$(( N + 1 ))
done
echo "$TMP/$DATE/$N"
}
read_log_to_tmp()
{
LOGPATH="$1"
LOG="$(echo $LOGPATH | sed "s/.*\///g" | sed "s/\.gmi//g")"
CURRENT_POST_HEADING=""
CURRENT_POST_FILENAME=""
while read line; do
if [[ -z "$CURRENT_POST_FILENAME" ]]; then
if [[ "$line" =~ (\#+)\ *([0-9]{4}-[0-9]{2}-[0-9]{2})(\.[0-9]+)?\ * ]]; then
CURRENT_POST_HEADING="${BASH_REMATCH[1]}"
DATE="${BASH_REMATCH[2]}"
CURRENT_POST_FILENAME="$(new_filename $DATE)"
elif [[ "$line" =~ \=\>\ +([^\ ]+)\ +([0-9]{4}-[0-9]{2}-[0-9]{2})(\.[0-9]+)?\ +(.*) ]]; then
HREF="${BASH_REMATCH[1]}"
DATE="${BASH_REMATCH[2]}"
NAME="${BASH_REMATCH[3]}"
FILENAME="$(new_filename $DATE)"
echo "
=> $HREF $DATE $NAME
From my $LOG.
=> /logs/$LOG.gmi My $LOG" \
>> "$FILENAME"
fi
else
if [[ "$line" =~ (\#+)\ *([0-9]{4}-[0-9]{2}-[0-9]{2})\ * ]]; then
echo "From my $LOG.
=> /logs/$LOG.gmi My $LOG" \
>> "$CURRENT_POST_FILENAME"
CURRENT_POST_HEADING="${BASH_REMATCH[1]}"
DATE="${BASH_REMATCH[2]}"
CURRENT_POST_FILENAME="$(new_filename $DATE)"
elif [[ "$line" =~ \#.* ]] && ! [[ "$line" =~ ${CURRENT_POST_HEADING}\#.* ]]; then
echo "From my $LOG.
=> /logs/$LOG.gmi My $LOG" \
>> "$CURRENT_POST_FILENAME"
CURRENT_POST_HEADING=""
DATE=""
CURRENT_POST_FILENAME=""
else
echo "$line" >> "$CURRENT_POST_FILENAME"
fi
fi
done <$LOGPATH
}
trim_entries()
{
ENTRY_DIR="$1"
for entry in $ENTRY_DIR/*; do
while [[ -z "$(head -n 1 "$entry")" && "$(wc -l "$entry" | cut -c1)" -ne 0 ]]; do
tail -n +2 "$entry" | tee "$entry" 1>/dev/null
done
while [[ -z "$(tail -n 1 "$entry")" && "$(wc -l "$entry" | cut -c1)" -ne 0 ]]; do
head -n -1 "$entry" | tee "$entry" 1>/dev/null
done
if [[ -z "$(cat "$entry")" ]]; then
echo "Removing entry $entry: $(cat $entry)"
rm "$entry"
fi
done
if [[ "$(ls "$ENTRY_DIR" | wc -l)" -eq 0 ]]; then
rmdir "$ENTRY_DIR"
fi
}
append_entries_for_date()
{
DATE_DIR="$1"
DATE="$(echo "$DATE_DIR" | sed "s/.*\///g")"
echo "## $DATE
" >> "$LOGLOG"
ENTRY_COUNT="$(ls $DATE_DIR | wc -l)"
LAST_ENTRY="$(ls $DATE_DIR | tail -n 1)"
for entry in $DATE_DIR/*; do
cat "$entry" >> "$LOGLOG"
echo "" >> "$LOGLOG"
if [[ "$ENTRY_COUNT" -gt 1 && "$entry" != "$DATE_DIR/$LAST_ENTRY" ]]; then
echo \
------------------------------------------------------------------------ >> "$LOGLOG"
echo "" >> "$LOGLOG"
fi
done
}
echo "Cleaning existing loglog..."
rm -f "$LOGLOG"
echo "Reading logs to temporary files..."
for log in content/logs/*log.gmi; do
read_log_to_tmp "$log"
done
echo "Trimming entries in temporary files..."
for date in $TMP/*; do
trim_entries "$date"
done
echo "Copying loglog header..."
cp "$LOGLOG_HEADER" "$LOGLOG"
echo "Appending entries to loglog..."
dates=($TMP/*)
for ((i=${#dates[@]}-1; i>=0; i--)); do
append_entries_for_date "${dates[i]}"
done
echo "Cleaning up temporary files..."
rm -rf "$TMP"
echo "Done."
+38
View File
@@ -0,0 +1,38 @@
#!/bin/bash
LONGLOG="content/logs/longlog.gmi"
LONGLOG_HEADER="templates/longlog-header.gmi"
LONGLOG_SRC_DIR="content/logs/longlog"
HR="-----------------------------------------------------------------------"
trim_longlog_tail()
{
while [[ -z "$(tail -n 1 "$LONGLOG")" && "$(wc -l "$LONGLOG" | cut -c1)" -ne 0 ]]; do
head -n -1 "$LONGLOG" | tee "$LONGLOG" 1>/dev/null
done
}
echo "Cleaning existing longlog..."
rm -f "$LONGLOG"
echo "Copying longlog header..."
cp "$LONGLOG_HEADER" "$LONGLOG"
trim_longlog_tail
echo "" >> "$LONGLOG"
echo "Appending entries to longlog..."
posts=(${LONGLOG_SRC_DIR}/*)
for ((i=${#posts[@]}-1; i>=0; i--)); do
post="${posts[i]}"
if [[ "$post" =~ ${LONGLOG_SRC_DIR}/([0-9]{4}-[0-9]{2}-[0-9]{2}(\.[0-9]+)?)\.gmi ]]; then
date="${BASH_REMATCH[1]}"
suffix="${BASH_REMATCH[2]}"
title="$(head -n 1 "${posts[i]}" | sed "s/^\#\+ *//")"
echo "=> /logs/longlog/${date}${suffix}.gmi ${date} ${title}" >> "$LONGLOG"
else
echo "Error: $post does not match format YYYY-MM-DD(.n). Aborting..."
exit 1
fi
done
echo "Done."
+38
View File
@@ -0,0 +1,38 @@
#!/bin/bash
MICROLOG="content/logs/microlog.gmi"
MICROLOG_HEADER="templates/microlog-header.gmi"
MICROLOG_SRC_DIR="microlog"
HR="-----------------------------------------------------------------------"
trim_microlog_tail()
{
while [[ -z "$(tail -n 1 "$MICROLOG")" && "$(wc -l "$MICROLOG" | cut -c1)" -ne 0 ]]; do
head -n -1 "$MICROLOG" | tee "$MICROLOG" 1>/dev/null
done
}
echo "Cleaning existing microlog..."
rm -f "$MICROLOG"
echo "Copying microlog header..."
cp $MICROLOG_HEADER $MICROLOG
trim_microlog_tail
echo "Appending entries to microlog..."
posts=(${MICROLOG_SRC_DIR}/*)
for ((i=${#posts[@]}-1; i>=0; i--)); do
if [[ "${posts[i]}" =~ ${MICROLOG_SRC_DIR}/([0-9]{4}-[0-9]{2}-[0-9]{2}(\.[0-9]+)?)\.gmi ]]; then
date="${BASH_REMATCH[1]}"
echo "" >> "$MICROLOG"
echo "## ${date}" >> "$MICROLOG"
echo "" >> "$MICROLOG"
cat "${posts[i]}" >> "$MICROLOG"
trim_microlog_tail
else
echo "Error: ${posts[i]} does not match format YYYY-MM-DD(.n). Aborting..."
exit 1
fi
done
echo "Done."
+16
View File
@@ -0,0 +1,16 @@
gemini://joeac.net/logs/loglog.gmi
gemini://joeac.net/logs/microlog.gmi --watch
gemini://idiomdrottning.org:1965/sub
gemini://spool-five.com:1965/gemlog/index.gmi
gemini://jsreed5.org:1965/feeds/log.xml
https://free-our-feeds.ghost.io/rss
https://www.inkandswitch.com/index.xml
https://euhwc.co.uk/feed/
https://www.youtube.com/feeds/videos.xml?channel_id=UCVfwlh9XpX2Y_tQfjeln9QA
https://www.youtube.com/feeds/videos.xml?channel_id=UCfJxmjbygyA5KEdzzZv6Pbw
gemini://eph.smol.pub/posts
https://mwgmac.github.io --watch
https://dieterhelm.co.uk/feed/
https://extinctionrebellion.uk/feed/
https://pluralistic.net/feed/
https://podcasts.files.bbci.co.uk/p0gg4k6r.rss "Radical with Amol Rajan"
+4
View File
@@ -0,0 +1,4 @@
# joeac's feed aggregator
Hi! I'm Joe Carstairs, and you've found my feed aggregator. This is a list of
some stuff I think I might read.
+1
View File
@@ -0,0 +1 @@
../comitium-data/feed.gmi
+1
View File
@@ -0,0 +1 @@
../../common/images/
+17
View File
@@ -0,0 +1,17 @@
# joeac's capsule
Hi! I'm Joe Carstairs, and you've found my capsule, gemini://joeac.net.
=> /logs/longlog.gmi My longlog (for long posts)
=> /logs/microlog.gmi My microlog (for short posts)
=> /logs/loglog.gmi My loglog (all my posts forgathered)
=> /logs/index.gmi An index of all my logs (don't visit this page)
=> /feed.gmi My feed aggregator
Here are some other ways to 'engage' with me on the so-called 'Internet':
=> https://joeac.net Web
=> https://www.linkedin.com/in/joe-carstairs-0aa936277/ LinkedIn
=> https://www.facebook.com/joe.carstairs.5 Facebook
=> https://git.joeac.net My own Gitea instance
=> https://github.com/joeacarstairs GitHub
+8
View File
@@ -0,0 +1,8 @@
# joeac's logs
I told you not to visit this page! There's nothing here you can't get on my homepage. I hope you're disappointed.
=> / My homepage (way cooler than this page)
=> /logs/longlog.gmi My longlog (for long posts)
=> /logs/microlog.gmi My microlog (for short posts)
=> /logs/loglog.gmi My loglog (all my posts forgathered)
+1
View File
@@ -0,0 +1 @@
../../../common/longlog/
+1
View File
@@ -0,0 +1 @@
../comitium-data/subscriptions.gmi
+1
View File
@@ -0,0 +1 @@
../common/microlog/
Executable
+5
View File
@@ -0,0 +1,5 @@
#!/bin/sh
make && \
( ( sleep 5; comitium refresh --data comitium-data/ ) & ) \
&& agate --content content/ --addr [::]:1965 --addr 0.0.0.0:1965 --lang en-GB
+6
View File
@@ -0,0 +1,6 @@
# joeac's loglog
Hi! I'm Joe Carstairs, and you've found my loglog; my log of logs; all my posts of every description, all gathered into one place. If you're really that interested in my posts, I would encourage you to strongly consider the benefits of touching grass.
You should be aware that my build script seems to muck up the dates. Everything seems to be 2 months and 2 days off? I haven't got round to debugging and fixing this yet. Any theories, let me know.
+3
View File
@@ -0,0 +1,3 @@
# joeac's longlog
Hi! I'm Joe Carstairs, and you've found my longlog. Sometimes, I write a long or long-ish post, and I put it here.
+3
View File
@@ -0,0 +1,3 @@
# joeac's microlog
Hi! I'm Joe Carstairs, and you've found my microlog. Sometimes, when I think something, I put the thought here. I'm not sure why you'd want to read this, to be honest. I'd recommend turning the computer off and going for a walk instead.