#!/usr/bin/env bash # # Copyright (C) 2017 Alyssa Rosenzweig # Copyright (C) 2017 Michael Reed # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU 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 General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . BLOGTITLE="Libreboot News" BLOGBASE="https://libreboot.org/" BLOGDESCRIPTION="News on Libreboot development" # MANIFEST determines the order of news articles in news/index.md FILES=$(< news/MANIFEST) # usage: title file title() { sed -n 1p "$1" | sed -e s-^..-- } # usage: meta file meta() { file=$1 URL=$(printf '%s\n' "${file%.md}.html" | sed -e s-news/--) printf '%s\n' "[$(title "$file")]($URL){.title}" printf '%s\n' "[$(sed -n 3p "$file" | sed -e s-^..--)]{.date}" printf '\n' tail -n +5 "$file" | perl -p0e 's/(\.|\?|\!)( |\n)(.|\n)*/.../g' printf '\n' printf '\n' } # usage: rss_header rss_header() { printf '%s\n' '' printf '%s\n' '' printf '%s\n' "$BLOGTITLE" printf '%s\n' "${BLOGBASE}news/" printf '%s\n' "$BLOGDESCRIPTION" } # usage: rss_main file rss_main() { file=$1 # render content and escape desc=$(sed -e 's//\>/g') url="${file%.md}.html" printf '%s\n' '' printf '%s\n' "$(title "$file")" printf '%s\n' "$BLOGBASE$url" printf '%s\n' "$desc" printf '%s\n' '' } # usage: rss_footer rss_footer() { printf '%s\n' '' printf '%s\n' '' } # generate the index file cat news-list.md > news/index.md for f in $FILES do meta "$f" >> news/index.md done # generate the RSS index rss_header > news/feed.xml for f in $FILES do rss_main "$f" >> news/feed.xml done rss_footer >> news/feed.xml cp news/feed.xml feed.xml