#!/bin/sh set -eu . src/development/lib.sh usage() { cat <<-'EOF' Usage: md2html.sh -T TITLE [-D TOC_DEPTH] < FILE.md md2html.sh -h EOF } help() { cat <<-'EOF' Options: -T TITLE the required title of the generated HTML document -D TOC_DEPTH the depth of the generated table of contents (default: 2) -h, --help show this message Read markdown text from STDIN and emit HTML to STDOUT. Examples: Generate the HTML from markdown using the default: $ md2html.sh -T 'Homepage' < index.md > index.html Pick a different TOC depth: $ md2html.sh -D3 -T 'TODOs' < TODOs.md > TODOs.html EOF } for flag in "$@"; do case "$flag" in --) break ;; --help) usage help exit ;; *) ;; esac done TOC_DEPTH=2 while getopts 'T:D:h' flag; do case "$flag" in T) TITLE="$OPTARG" ;; D) TOC_DEPTH="$OPTARG" ;; h) usage help exit ;; *) usage >&2 exit 2 ;; esac done shift $((OPTIND - 1)) eval "$(assert_arg "${TITLE:-}" '-T TITLE')" HEAD="$(mkstemp)" trap 'rm -f "$HEAD"' EXIT cat <<-'EOF' > "$HEAD" EOF pandoc \ -s \ --toc \ --toc-depth="$TOC_DEPTH" \ --metadata lang=pt \ --metadata title="$TITLE" \ -H "$HEAD"