diff options
Diffstat (limited to 'aux/commonmark.sh')
-rwxr-xr-x | aux/commonmark.sh | 99 |
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:-} |