diff options
| author | Joe Carstairs <me@joeac.net> | 2026-04-25 10:47:21 +0100 |
|---|---|---|
| committer | Joe Carstairs <me@joeac.net> | 2026-04-25 10:48:02 +0100 |
| commit | 9a64bad16e1f12947654e2b1f4cf27d42879103d (patch) | |
| tree | e3d14707710d5525b3094744c2ec618f78ae20fd /capsule/build_longlog.bash | |
| parent | 92b58d8999f483c3d4f1d74d9dd33355fa8eaca8 (diff) | |
build longlog.gmi from posts and header template
Diffstat (limited to 'capsule/build_longlog.bash')
| -rwxr-xr-x | capsule/build_longlog.bash | 38 |
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." |
