diff options
Diffstat (limited to 'bin/compile-changelog')
| -rwxr-xr-x | bin/compile-changelog | 67 |
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 |
