diff options
author | EuAndreh <eu@euandre.org> | 2021-07-27 14:24:01 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2021-07-27 15:44:45 -0300 |
commit | 7bf0f2319442ee153cc656b72fa660c709f6a0cd (patch) | |
tree | ddae5f4ed3a7431bf026d3a64f9ff06615231804 /aux/workflow/manpages.sh | |
parent | aux/: Update, adjust Makefile (diff) | |
download | gistatic-7bf0f2319442ee153cc656b72fa660c709f6a0cd.tar.gz gistatic-7bf0f2319442ee153cc656b72fa660c709f6a0cd.tar.xz |
Re-setup repository using C over Rust
Diffstat (limited to '')
-rwxr-xr-x | aux/workflow/manpages.sh | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/aux/workflow/manpages.sh b/aux/workflow/manpages.sh new file mode 100755 index 0000000..5c83a37 --- /dev/null +++ b/aux/workflow/manpages.sh @@ -0,0 +1,68 @@ +#!/bin/sh +set -eu + +while getopts 'iuHo:p:' flag; do + case "$flag" in + i) + ACTION=install + ;; + u) + ACTION=uninstall + ;; + H) + ACTION=html + ;; + o) + OUTDIR="$OPTARG" + ;; + p) + MANPREFIX="$OPTARG" + ;; + *) + exit 2 + ;; + esac +done +shift $((OPTIND - 1)) + +assert_arg() { + if [ -z "$1" ]; then + echo "Missing $2" >&2 + exit 2 + fi +} + +assert_arg "${ACTION:-}" '-[iuH] for choosing action' + +for f in "$@"; do + l="$(echo "$f" | awk -F. '{print $(NF-1)}')" + n="$(echo "$f" | awk -F. '{print $NF}')" + case "$ACTION" in + html) + assert_arg "${OUTDIR:-}" '-o OUTDIR' + to_name="$(basename "${f%.$l.$n}.$n.html")" + mkdir -p "$OUTDIR/$l" + pandoc -s -r man -w html --metadata "lang=$l" \ + < "$f" > "$OUTDIR/$l/$to_name" + ;; + install) + assert_arg "${MANPREFIX:-}" '-p MANPREFIX' + to_name="$(basename "${f%.$l.$n}.$n")" + mkdir -p "$MANPREFIX/$l/man$n" "$MANPREFIX/man$n" + cp "$f" "$MANPREFIX/$l/man$n/$to_name" + ln -fs "../en/man$n/$to_name" \ + "$MANPREFIX/man$n/$to_name" + ;; + uninstall) + assert_arg "${MANPREFIX:-}" '-p MANPREFIX' + to_name="$(basename "${f%.$l.$n}.$n")" + rm -f \ + "$MANPREFIX/$l/man$n/$to_name" \ + "$MANPREFIX/man$n/$to_name" + ;; + *) + echo "Bad ACTION: $ACTION" + exit 1 + ;; + esac +done |