aboutsummaryrefslogtreecommitdiff
path: root/aux/workflow/assert-manpages.sh
diff options
context:
space:
mode:
Diffstat (limited to 'aux/workflow/assert-manpages.sh')
-rwxr-xr-xaux/workflow/assert-manpages.sh83
1 files changed, 36 insertions, 47 deletions
diff --git a/aux/workflow/assert-manpages.sh b/aux/workflow/assert-manpages.sh
index 55f9b58..8a3c497 100755
--- a/aux/workflow/assert-manpages.sh
+++ b/aux/workflow/assert-manpages.sh
@@ -3,7 +3,7 @@ set -eu
TLD="$(cat aux/tld.txt)"
IN_PLACE=false
-while getopts 'n:m:i' flag; do
+while getopts 'l:n:m:i' flag; do
case "$flag" in
n)
PROJECT="$OPTARG"
@@ -14,6 +14,9 @@ while getopts 'n:m:i' flag; do
i)
IN_PLACE=true
;;
+ l)
+ LANGS="$OPTARG"
+ ;;
*)
exit 2
;;
@@ -28,8 +31,9 @@ assert_arg() {
fi
}
-assert_arg "${PROJECT:-}" '-n PROJECT'
+assert_arg "${PROJECT:-}" '-n PROJECT'
assert_arg "${MAILING_LIST:-}" '-m MAILING_LIST'
+assert_arg "${LANGS:-}" '-l LANGS'
EXPECTED_EN="$(mktemp)"
@@ -179,50 +183,35 @@ Komentoj kaj diskutoj
EOF
-#
-# This assumes that the naming convention of the manpage files is:
-# a-name.$lang.[0-9]
-#
-# Having extra periods in the middle or at the end would violate this
-# assumption, and the code below won't work.
-#
-# shellcheck disable=2044
-for f in $(find doc -type f -name '*.[0-9]'); do
- LINES="$(wc -l "$f" | cut -d\ -f1)"
- if [ "$LINES" = 1 ] && grep -Eq '^\.so man.+$' "$f"; then
- continue
- fi
-
- if [ ! -s "$f" ]; then
- continue
- fi
-
- lang="$(echo "$f" | cut -d. -f2)"
- case "$lang" in
- en)
- EXPECTED="$EXPECTED_EN"
- ;;
- pt)
- EXPECTED="$EXPECTED_PT"
- ;;
- fr)
- EXPECTED="$EXPECTED_FR"
- ;;
- eo)
- EXPECTED="$EXPECTED_EO"
- ;;
- *)
- printf 'Unsupported lang: %s\n' "$lang" >&2
- exit 2
- ;;
- esac
-
- if ! tail -n "$(wc -l < "$EXPECTED")" "$f" | diff - "$EXPECTED"; then
- echo "Missing metadata at the end of \"$f\" file"
- if [ "$IN_PLACE" = true ]; then
- cat "$EXPECTED" >> "$f"
- else
- exit 1
+for from_f in "$@"; do
+ for lang in $LANGS; do
+ case "$lang" in
+ en)
+ EXPECTED="$EXPECTED_EN"
+ ;;
+ pt)
+ EXPECTED="$EXPECTED_PT"
+ ;;
+ fr)
+ EXPECTED="$EXPECTED_FR"
+ ;;
+ eo)
+ EXPECTED="$EXPECTED_EO"
+ ;;
+ *)
+ printf 'Unsupported lang: %s\n' "$lang" >&2
+ exit 2
+ ;;
+ esac
+
+ f="$(echo "$from_f" | sed "s/\.en\./.$lang./")"
+ if ! tail -n "$(wc -l < "$EXPECTED")" "$f" | diff - "$EXPECTED"; then
+ echo "Missing metadata at the end of \"$f\" file"
+ if [ "$IN_PLACE" = true ]; then
+ cat "$EXPECTED" >> "$f"
+ else
+ exit 1
+ fi
fi
- fi
+ done
done