summaryrefslogtreecommitdiff
path: root/aux/commonmark.sh
diff options
context:
space:
mode:
Diffstat (limited to 'aux/commonmark.sh')
-rwxr-xr-xaux/commonmark.sh99
1 files changed, 99 insertions, 0 deletions
diff --git a/aux/commonmark.sh b/aux/commonmark.sh
new file mode 100755
index 0000000..7f56e53
--- /dev/null
+++ b/aux/commonmark.sh
@@ -0,0 +1,99 @@
+#!/bin/sh
+set -eu
+
+. tests/lib.sh
+
+
+usage() {
+ cat <<-'EOF'
+ Usage:
+ sh aux/commonmark.sh -N NAME_UC -t TITLE -l LANG [-H HEADER]
+ sh aux/commonmark.sh -h
+ EOF
+}
+
+help() {
+ cat <<-'EOF'
+
+
+ Options:
+ -N NAME_UC the UpperCase name of the project
+ -t TITLE the title of the page
+ -l LANG the language of this page
+ -H HEADER extra header content to be included as a file
+ -h, --help show this message
+
+
+ Consume CommonMark data from STDIN and emit HTML5 to STDOUT,
+ using NAME_UC, TITLE and LANG as metadata, and allowing extra
+ HTML to be injected via HEADER.
+
+
+ Examples:
+
+ Generate `index.html` from `README.md`:
+
+ $ sh aux/commonmark.sh -N MyProj -t Home -l en -H extra.html < README.md > index.html
+ EOF
+}
+
+
+for flag in "$@"; do
+ case "$flag" in
+ (--)
+ break
+ ;;
+ (--help)
+ usage
+ help
+ exit
+ ;;
+ (*)
+ ;;
+ esac
+done
+
+while getopts 'N:t:l:H:h' flag; do
+ case "$flag" in
+ (N)
+ NAME_UC="$OPTARG"
+ ;;
+ (t)
+ TITLE="$OPTARG"
+ ;;
+ (l)
+ THE_LANG="$OPTARG"
+ ;;
+ (H)
+ HEADER="$OPTARG"
+ ;;
+ (h)
+ usage
+ help
+ exit
+ ;;
+ (*)
+ usage >&2
+ exit 2
+ ;;
+ esac
+done
+shift $((OPTIND - 1))
+
+eval "$(assert_arg "${NAME_UC:-}" '-N NAME_UC')"
+eval "$(assert_arg "${TITLE:-}" '-t TITLE')"
+eval "$(assert_arg "${THE_LANG:-}" '-l THE_LANG')"
+
+
+THE_TITLE="$NAME_UC | $TITLE"
+
+pandoc \
+ --toc \
+ --toc-depth=2 \
+ -s \
+ --metadata title="$THE_TITLE" \
+ --metadata "lang=$THE_LANG" \
+ -r commonmark \
+ -w html \
+ -H aux/favicon.html \
+ ${HEADER:+-H} ${HEADER:-}