#!/bin/sh set -eu export LANG=POSIX.UTF-8 normalize() { xargs realpath --relative-to=. | sort } pages() { find src/pages/*/*.adoc -type f | normalize } articles() { find src/collections/*/*/ -type f -name '*.adoc' | normalize } listings() { find src/collections/*/index.adoc | normalize } extras() { find src/content/ -type f \ -name '*.flac' -or \ -name '*.webm' -or \ -name '*.tar.gz' } files() { pages articles listings } pages | varlist 'pages.adoc' articles | varlist 'articles.adoc' listings | varlist 'listings.adoc' listings | sed 's|/index\.adoc$|/categories.txt|' | varlist 'categories.txt' listings | sed 's|/index\.adoc$|/feed.xml|' | varlist 'feeds.xml' find src/content/img/ -name '*.svg' | varlist 'images.svg' extras | varlist 'sources.extras' files | sed 's/^\(.*\)\.adoc$/\1.htmlbody\t\1.snippets\t\1.conf:\t\1.adoc/' files | sed 's/^\(.*\)\.adoc$/\1.html:\t\1.conf\t\1.htmlbody/' printf '\n' files | sed 's/^\(.*\)\.adoc$/\1.html.gz:\t\1.html/' files | sed 's/^\(.*\)\.adoc$/\1.snippets.gz:\t\1.snippets/' listings | sed 's|^\(.*\)/index\.adoc$|\1/categories.xml.gz:\t\1/categories.xml|' listings | sed 's|^\(.*\)/index\.adoc$|\1/feed.xml.gz:\t\1/feed.xml|' printf '\n' files | sed 's/^\(.*\)\.adoc$/\1.updatedat-check:\t\1.conf/' files | sed 's/^\(.*\)\.adoc$/\1.links-internal-check:\t\1.links/' files | sed 's/^\(.*\)\.adoc$/\1.caslinks:\t\1.links/' printf '\n' articles | sed 's/^\(.*\)\.adoc$/\1.feedentry:\t\1.conf\t\1.htmlbody/' articles | sed 's/^\(.*\)\.adoc$/\1.sortdata:\t\1.conf/' articles | sed 's/^\(.*\)\.adoc$/\1.categorydata:\t\1.conf/' printf '\n' listings | sed 's/^\(.*\)\.adoc$/\1.htmlheader\t\1.htmlfooter:\t\1.conf/' listings | sed 's/^\(.*\)\.adoc$/\1.html:\t\1.htmlheader\t\1.htmlfooter/' listings | sed 's/^\(.*\)\.adoc$/\1.html:\t\1.htmllisting\t\1.htmlbody/' for colllink in src/collections/*; do c="$(printf '%s' "$colllink" | normalize)" printf '\n\n' name="$(basename "$c")" find "$c"/*/ -type f -name '*.adoc' | varlist "articles.$name.adoc" art=articles # so things fit in 80 columns echo "$art.$name.sortdata = \$($art.$name.adoc:.adoc=.sortdata)" echo "$art.$name.indexentry = \$($art.$name.adoc:.adoc=.indexentry)" echo "$art.$name.feedentry = \$($art.$name.adoc:.adoc=.feedentry)" echo "$art.$name.categorydata = \$($art.$name.adoc:.adoc=.categorydata)" printf '%s/sortdata.txt:\tdeps.mk\n' "$c" printf '\tprintf %s $(articles.%s.sortdata) > $@\n\n' "'%s\n'" "$name" printf '%s/categories.txt\t%s/feed.xml\t%s/index.htmllisting:' \ "$c" "$c" "$c" printf '\t%s/sortdata.txt\t$(articles.%s.sortdata)\n' "$c" "$name" printf '%s/index.htmllisting:\t$(articles.%s.indexentry)\n' "$c" "$name" printf '%s/categories.txt:\t$(articles.%s.categorydata)\n' "$c" "$name" printf '%s/categories.xml:\t%s/categories.txt\n' "$c" "$c" printf '%s/categories.txt\t%s/feed.xml:\t$(articles.%s.feedentry)\n' \ "$c" "$c" "$name" done