summaryrefslogtreecommitdiff
path: root/gemini/build_longlog.bash
blob: d23acfa1ea99c4be299a100fe5b3123b44e04037 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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."