aboutsummaryrefslogtreecommitdiff
path: root/doc/manpages.sh
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2021-08-06 16:27:20 -0300
committerEuAndreh <eu@euandre.org>2021-08-06 16:27:20 -0300
commita3b44f937180e7544b70ca375543060a3ee57570 (patch)
tree823531277559c2f836908f9a94fdce184febdb3b /doc/manpages.sh
parentmv tests/tests-lib.sh tests/lib.sh (diff)
downloadgit-permalink-a3b44f937180e7544b70ca375543060a3ee57570.tar.gz
git-permalink-a3b44f937180e7544b70ca375543060a3ee57570.tar.xz
mv aux/workflow/manpages.sh doc/manpages.sh
Diffstat (limited to 'doc/manpages.sh')
-rwxr-xr-xdoc/manpages.sh68
1 files changed, 68 insertions, 0 deletions
diff --git a/doc/manpages.sh b/doc/manpages.sh
new file mode 100755
index 0000000..5c83a37
--- /dev/null
+++ b/doc/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