diff options
author | EuAndreh <eu@euandre.org> | 2022-09-02 12:34:10 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2022-09-02 12:34:10 -0300 |
commit | b7f4fe9d45b6869263fec955fe11d411e43ce69b (patch) | |
tree | 2d64dfa5f1cf8568bc27b8c0c7e2df4cbe929af7 /v2/src/bin | |
parent | v2/src/development/genhtml.sh: Use `htmlesc` over `html` (diff) | |
download | euandre.org-b7f4fe9d45b6869263fec955fe11d411e43ce69b.tar.gz euandre.org-b7f4fe9d45b6869263fec955fe11d411e43ce69b.tar.xz |
Generate .entry-content and .entry-env when building HTML
Diffstat (limited to 'v2/src/bin')
-rwxr-xr-x | v2/src/bin/extract | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/v2/src/bin/extract b/v2/src/bin/extract new file mode 100755 index 0000000..ce4b115 --- /dev/null +++ b/v2/src/bin/extract @@ -0,0 +1,103 @@ +#!/bin/sh +set -eu + + +usage() { + cat <<-'EOF' + Usage: + extract -t TYPE < STDIN + extract -h + EOF +} + +help() { + cat <<-'EOF' + + Options: + -t TYPE the type of extraction to perform ("content" or "env") + -h, --help show this message + + + Separate the content from the "frontmatter", and emit the + selected one. + + + Examples: + + Get the content: + + $ extract -t content < src/file.md > src/file.entry-content + + + Get the "frontmatter": + + $ extract -t env < src/f.md > src/f.entry-env + EOF +} + + +for flag in "$@"; do + case "$flag" in + --) + break + ;; + --help) + usage + help + exit + ;; + *) + ;; + esac +done + +TYPE='' +while getopts 't:h' flag; do + case "$flag" in + t) + TYPE="$OPTARG" + ;; + h) + usage + help + exit + ;; + *) + usage >&2 + exit 2 + ;; + esac +done +shift $((OPTIND - 1)) + + +eval "$(assert-arg "$TYPE" '-t TYPE')" + + +case "$TYPE" in + content) + awk ' + separator >= 2 + /^---$/ { separator++ } + ' + ;; + env) + awk ' + /^---$/ { + if (++separator > 1) { + exit + } else { + next + } + } + + { print } + ' + ;; + *) + printf 'Bad value for TYPE: "%s".\n\n' \ + "$TYPE" >&2 + usage >&2 + exit 2 + ;; +esac |