summaryrefslogtreecommitdiff
path: root/capsule/build_longlog.bash
diff options
context:
space:
mode:
authorJoe Carstairs <me@joeac.net>2026-04-25 10:47:21 +0100
committerJoe Carstairs <me@joeac.net>2026-04-25 10:48:02 +0100
commit9a64bad16e1f12947654e2b1f4cf27d42879103d (patch)
treee3d14707710d5525b3094744c2ec618f78ae20fd /capsule/build_longlog.bash
parent92b58d8999f483c3d4f1d74d9dd33355fa8eaca8 (diff)
build longlog.gmi from posts and header template
Diffstat (limited to 'capsule/build_longlog.bash')
-rwxr-xr-xcapsule/build_longlog.bash38
1 files changed, 38 insertions, 0 deletions
diff --git a/capsule/build_longlog.bash b/capsule/build_longlog.bash
new file mode 100755
index 0000000..d23acfa
--- /dev/null
+++ b/capsule/build_longlog.bash
@@ -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."