#!/bin/sh # This program is free software: you can redistribute it and/or modify it under # the terms of the GNU Affero General Public License as published by the Free # Software Foundation, either version 3 of the License, or (at your option) any # later version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more # details. readonly ROOTDIR="$(CDPATH="" cd -- "$(dirname -- "$0")/.." && pwd -P)" main() { # Handle opts while getopts ":h" opt do case "$opt" in h) usage && exit 0 ;; *) printf "Invalid option passed: %s\n" "$OPTARG" >&2 ;; esac done shift $(( OPTIND - 1 )) # Make a list of all unique tags tags="$(mktemp)" awk '/^tags:/ { for (i=2; i<=NF; i++) print $i }' "$ROOTDIR/src/_posts/"* \ | sort \ | uniq \ > "$tags" # Create a feed for each tag mkdir -p -- "$ROOTDIR/src/feed" mkdir -p -- "$ROOTDIR/src/atom" while read -r tag do lc_tag="$(printf "%s" "$tag" | tr "[:upper:]" "[:lower:]")" echo "Creating RSS 2.0 feed for $lc_tag" TAG="$tag" envsubst < "$ROOTDIR/share/feed-rss2.xml" > "$ROOTDIR/src/feed/$lc_tag.xml" echo "Creating Atom feed for $lc_tag" TAG="$tag" envsubst < "$ROOTDIR/share/feed-atom.xml" > "$ROOTDIR/src/atom/$lc_tag.xml" unset lc_tag done < "$tags" # Clean up rm -f -- "$tags" } usage() { cat <