diff options
Diffstat (limited to '')
-rwxr-xr-x | v2/src/bin/feed | 44 |
1 files changed, 32 insertions, 12 deletions
diff --git a/v2/src/bin/feed b/v2/src/bin/feed index 0488c86..52c6199 100755 --- a/v2/src/bin/feed +++ b/v2/src/bin/feed @@ -27,7 +27,7 @@ help() { Generate a feed for TILs: - $ feed src/en/feeds/til.xml + $ feed src/en/tils/feed.xml EOF } @@ -68,24 +68,44 @@ FILENAME="${1:-}" eval "$(assert_arg "$FILENAME" 'FILENAME')" -COLLECTION="$(basename "$FILENAME" '.xml')" -LANGUAGE="$(lang-for "$FILENAME")" -DIR="$(dirname "$(dirname "$FILENAME")")/$COLLECTION" - - . src/lib/base.conf # shellcheck source=/dev/null -. src/lib/base."$LANGUAGE".conf +. src/lib/base."$(lang-for "$FILENAME")".conf + now="$(date -uIs)" -url="$(url-for "${FILENAME#"$CONTENT_PREFIX"}" | absolute)" +url_absolute="$(url-for "${FILENAME#"$CONTENT_PREFIX"/}" | absolute)" site_name_html="$(htmlesc "${site_name:?}")" -export now url site_name_html +collection="$(collection-for "$FILENAME")" +collection_url_absolute="$(url-for "${lang:?}/$collection/" | absolute)" +feed_title_html="$(eval "echo \"\$feed_${collection}_title\"" | htmlesc)" +export now url_absolute site_name_html collection_url_absolute feed_title_html - -mkdir -p "$(dirname "$FILENAME")" +DIR="$(dirname "$FILENAME")" +mkdir -p "$DIR" { envsubst < src/lib/feed.xml - find "$DIR"/*.sortdata 2>/dev/null | sort -nr | xargs cat | xargs cat + find "$DIR"/*.sortdata 2>/dev/null | + sort -nr | + xargs cat | + sed 's|\.md$|.xmlentry|' | + xargs cat printf '</feed>\n' } > "$FILENAME" + +printf '' > "$DIR"/index.extrafeeds +while read -r category; do + url_absolute="$(url-for "${DIR#"$CONTENT_PREFIX"/}/feed.$category.xml" | absolute)" + collection_url_absolute="$(url-for "${DIR#"$CONTENT_PREFIX"/}/${by_category_url_part:?}#$category" | absolute)" + feed_title_html="$(eval "echo \"\$index_category_${collection}_title\"" | htmlesc)" + export url_absolute collection_url_absolute feed_title_html + + { + envsubst < src/lib/feed.xml + < "$DIR/$category.category" \ + sed 's|\.md$|.xmlentry|' | + xargs cat + printf '</feed>\n' + } > "$DIR/feed.$category.xml" + echo "$DIR/feed.$category.xml" >> "$DIR"/index.extrafeeds +done < "$DIR"/index.categories |