aboutsummaryrefslogtreecommitdiff
path: root/aux/workflow/manpages.sh
blob: e4ea8f23bde7b7237fe7bc661967ab9688d320c1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/bin/sh
set -eu

LANGS="$1"
OP="$2"
PREFIX="${3:-}"

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