#!/bin/sh
### Code:
usage() {
cat <<\EOF
ht: Build a website
Usage: ht -h
ht [OPTIONS...] FILE...
FLAGS:
-h Show this help and exit.
-B Treat all targets as "new" (like in `make').
OPTIONS:
-u BASEURL The base URL of the built site. Default: https://example.com
-o OUTD Output built files to OUTD. Default: ./out/
-w WORKD Use WORKD as the working directory. Default: /tmp/ht/
-p PROC Use PROC to process each input file. Default: ./ht.awk
-P TEMPLATE Use TEMPLATE as the page template. Default: ./page.tmpl.htm
-i ITEMFMT Format individual items with ITEMFMT in the site index.
-I TEMPLATE Use TEMPLATE as the index template. Default: ./index.tmpl.htm
-f ITEMFMT Format individual items with ITEMFMT in the site feed.
-F TEMPLATE Use TEMPLATE as the feed template. Default: ./feed.tmpl.xml
-s DIRECTORY The DIRECTORY holding static files (images, css, etc.).
Default: ./static/
-S DIRECTORY The DIRECTORY to copy static files to. Default: ./out/static.
PARAMETERS:
FILE... The list of files to include in the website.
EOF
exit "${1:-0}"
}
main() {
configure "$@"
shift $((OPTIND - 1))
prepare
static_copy
for input; do
page_write "$PAGE_TEMPLATE" "$input"
done
if [ -n "$INDEXEACH" ]; then
index_write "$INDEX_TEMPLATE" "$INDEXEACH" "$OUTD/$INDEXNAME"
fi
if [ -n "$FEEDEACH" ]; then
index_write "$FEED_TEMPLATE" "$FEEDEACH" "$OUTD/$FEEDNAME"
fi
printf 'Done. ' >&2
if test -f "$WORKD/ok"; then
eprint "No errors reported."
else
eprint "There were errors."
fi
}
configure() {
OUTD="${HT_OUT_DIR:-./out}"
WORKD="${HT_WORKD:-/tmp/ht}"
PROC="${HT_PROC:-./ht.awk}" # XXX: Needs better resolution
BASEURL="${HT_BASEURL:-https://example.com}"
PAGE_TEMPLATE="${HT_PAGE_TEMPLATE:-./page.tmpl.htm}"
INDEX_TEMPLATE="${HT_INDEX_TEMPLATE:-./index.tmpl.htm}"
FEED_TEMPLATE="${HT_FEED_TEMPLATE:-./feed.tmpl.xml}"
ALLNEW=false
STATICD="${HT_STATIC_DIR:-./static}"
STATICOUT="${HT_STATIC_OUTPUT_DIR:-${OUTD}/static}"
INDEXNAME="${HT_INDEX_NAME:-index.html}"
if [ -n "$HT_INDEX_ITEM_FORMAT" ]; then
INDEXEACH="$HT_INDEX_ITEM_FORMAT"
else
# shellcheck disable=2016
INDEXEACH='