aboutsummaryrefslogtreecommitdiff
path: root/aux/workflow/manpages.sh
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xaux/workflow/manpages.sh113
1 files changed, 62 insertions, 51 deletions
diff --git a/aux/workflow/manpages.sh b/aux/workflow/manpages.sh
index e4ea8f2..fe215f7 100755
--- a/aux/workflow/manpages.sh
+++ b/aux/workflow/manpages.sh
@@ -1,55 +1,66 @@
#!/bin/sh
set -eu
-LANGS="$1"
-OP="$2"
-PREFIX="${3:-}"
+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))
-if [ "$OP" = '--update' ]; then
- for f in doc/*.en.[1-9]; do
- for lang in $LANGS; do
- to="$(echo "$f" | sed "s|\.en\.|.$lang.|")"
- po4a-updatepo -f man -m "$f" -p "doc/$lang.po"
- printf 'Translating %s...\n' "$to" >&2
- OUT="$(po4a-translate -f man -m "$f" -p "doc/$lang.po" -l "$to" -k 0 -v 2>&1)"
- echo "$OUT" >&2
- if ! echo "$OUT" | grep -qF ' is 100% translated ('; then
- printf "\n WARNING!\n Missing translations for %s\n\n" "$to" >&2
- fi
- done
- done
-else
- shift 4 ||: # remove up to '--'
- for f in doc/*.en.[1-9]; do
- n="${f##*.}"
- fileto_name="$(basename "${f%.en.$n}").$n"
- for lang in $LANGS en; do
- filefrom_name="${f%.en.$n}.$lang.$n"
- mandir_name="$PREFIX/$lang/man$n"
- htmldir_name="public/$lang/"
- case "$OP" in
- --install)
- mkdir -p "$mandir_name"
- # shellcheck disable=2068
- $@ < "$filefrom_name" > "$mandir_name/$fileto_name"
- mkdir -p "$PREFIX/man$n"
- ln -fs "../en/man$n/$fileto_name" "$PREFIX/man$n/$fileto_name"
- ;;
- --uninstall)
- rm -f \
- "$PREFIX/$lang/man$n/$fileto_name" \
- "$PREFIX/man$n/$fileto_name"
- ;;
- --html)
- mkdir -p "$htmldir_name"
- # shellcheck disable=2068
- $@ < "$filefrom_name" | pandoc -s -r man -w html > "public/$lang/$fileto_name.html"
- ;;
- *)
- echo "Unsupported operation: $OP"
- exit 2
- ;;
- esac
- done
- done
-fi
+assert() {
+ if [ -z "$1" ]; then
+ echo "Missing $2 argument" >&2
+ exit 2
+ fi
+}
+
+assert "${ACTION:-}" 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 "${OUTDIR:-}" 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 "${MANPREFIX:-}" 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 "${MANPREFIX:-}" 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