renames capsule -> gemini
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
[*]
|
||||
max_line_length = 99999
|
||||
@@ -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
|
||||
@@ -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)
|
||||
Executable
+131
@@ -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."
|
||||
Executable
+38
@@ -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."
|
||||
Executable
+38
@@ -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."
|
||||
@@ -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"
|
||||
@@ -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.
|
||||
Symlink
+1
@@ -0,0 +1 @@
|
||||
../comitium-data/feed.gmi
|
||||
Symlink
+1
@@ -0,0 +1 @@
|
||||
../../common/images/
|
||||
@@ -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
|
||||
@@ -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)
|
||||
Symlink
+1
@@ -0,0 +1 @@
|
||||
../../../common/longlog/
|
||||
Symlink
+1
@@ -0,0 +1 @@
|
||||
../comitium-data/subscriptions.gmi
|
||||
Symlink
+1
@@ -0,0 +1 @@
|
||||
../common/microlog/
|
||||
Executable
+5
@@ -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
|
||||
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
Reference in New Issue
Block a user