aboutsummaryrefslogtreecommitdiff
path: root/bin/compile-changelog
diff options
context:
space:
mode:
Diffstat (limited to 'bin/compile-changelog')
-rwxr-xr-xbin/compile-changelog67
1 files changed, 67 insertions, 0 deletions
diff --git a/bin/compile-changelog b/bin/compile-changelog
new file mode 100755
index 0000000..862df31
--- /dev/null
+++ b/bin/compile-changelog
@@ -0,0 +1,67 @@
+#!/usr/bin/env bash
+#
+# Feed compiler
+# Based on https://recursewithless.net/projects/pandoc-feeds.html
+#
+
+# Parameters
+BASENAME="`basename $0 | sed -e 's/\(.\)/\U\1/'`"
+DIRNAME="`dirname $0`"
+BASEDIR="$DIRNAME/.."
+CHANGES="_changelog.yml"
+CHANGELOG="content/notes/00-changelog/changelog.md"
+BOOK="_book.yml"
+COMMON="_common.yml"
+META=".metadata/feed.yml"
+RSS_TMPL="$BASEDIR/templates/rss.xml"
+ATOM_TMPL="$BASEDIR/templates/atom.xml"
+CHANGELOG_TMPL="$BASEDIR/templates/changelog.md"
+CHANGES_TMPL="$BASEDIR/templates/_changelog.yml"
+URL="snippets/url.txt"
+CONTACT="snippets/contact.txt"
+
+# Ensure the changes file exists
+if [ ! -e "$CHANGES" ]; then
+ # Create sample $CHANGES file
+ cp $CHANGES_TMPL $CHANGES
+fi
+
+# Create .metadata/feed.yaml with the needed metadata
+mkdir -p "`dirname $META`"
+echo '---' > $META
+echo "url: $(cat $URL)" >> $META
+echo "email: $(cat $CONTACT)" >> $META
+
+# Generate the Atom feed
+pandoc -M updated="$(LC_ALL=C date --iso-8601='seconds')" \
+ --metadata-file=$META \
+ --metadata-file=$CHANGES \
+ --metadata-file=$BOOK \
+ --metadata-file=$COMMON \
+ --template=$ATOM_TMPL \
+ -t plain \
+ -o atom.xml < /dev/null
+
+# Generate the RSS feed
+pandoc -M updated="$(LC_ALL=C date '+%d %b %Y %T %z')" \
+ --metadata-file=$META \
+ --metadata-file=$CHANGES \
+ --metadata-file=$BOOK \
+ --metadata-file=$COMMON \
+ --template=$RSS_TMPL \
+ -t plain \
+ -o rss.xml < /dev/null
+
+# Generate changelog.md
+mkdir -p "`dirname $CHANGELOG`"
+pandoc \
+ --metadata-file=$META \
+ --metadata-file=$CHANGES \
+ --metadata-file=$BOOK \
+ --metadata-file=$COMMON \
+ --template=$CHANGELOG_TMPL \
+ -t markdown \
+ -o $CHANGELOG < /dev/null
+
+# Fix list formatting in the Markdown output
+sed -i -e 's/- /* /' $CHANGELOG