#!/bin/sh set -eu set -o pipefail usage() { cat <<-'EOF' Usage: rfc [-w FORMAT] RFC_NUMBER rfc -h EOF } help() { cat <<-'EOF' Options: -w FORMAT Choose between text (txt, the default) and JSON (json) -h, --help show this message EOF } for flag in "$@"; do case "$flag" in --) break ;; --help) usage help exit ;; *) ;; esac done FORMAT='txt' while getopts 'w:h' flag; do case "$flag" in w) case "$OPTARG" in json|txt) FORMAT="$OPTARG" ;; *) printf 'Bad FORMAT options: %s\n' \ "$OPTARG" >&2 exit 2 ;; esac ;; h) usage help exit ;; *) usage >&2 exit 2 ;; esac done shift $((OPTIND - 1)) if [ -z "${1:-}" ]; then echo 'Missing argument RFC_NUMBER' >&2 usage >&2 exit 2 fi if [ ! -e "$HOME/.local/share/doc/rfc/rfc$1.$FORMAT" ]; then printf 'Given RFC_NUMBER "%s" does not exist\n' "$1" >&2 exit 2 fi view() { if [ -t 1 ]; then $PAGER else cat - fi } case "$FORMAT" in txt) cat "$HOME/.local/share/doc/rfc/rfc$1.txt" | view ;; json) jq < "$HOME/.local/share/doc/rfc/rfc$1.json" | view ;; *) printf 'Unreachable: unsupported FORMAT "%s"\n' \ "$FORMAT" >&2 exit 2 ;; esac