From 0f689438635d3a1c4cbf9cc1e62b69a72e642c68 Mon Sep 17 00:00:00 2001 From: EuAndreh Date: Thu, 15 Jul 2021 11:52:16 -0300 Subject: aux/workflow/assert-manpages.sh: Get input languages and en files as arguments --- Makefile | 2 +- aux/workflow/assert-manpages.sh | 83 ++++++++++++++++++----------------------- 2 files changed, 37 insertions(+), 48 deletions(-) diff --git a/Makefile b/Makefile index 3de8c32..edf66af 100644 --- a/Makefile +++ b/Makefile @@ -34,7 +34,7 @@ dev-check: check public sh aux/workflow/assert-todos.sh sh aux/workflow/assert-changelog.sh -n $(NAME) sh aux/workflow/assert-readme.sh -n $(NAME) -m $(MAILING_LIST) - sh aux/workflow/assert-manpages.sh -n $(NAME) -m $(MAILING_LIST) + sh aux/workflow/assert-manpages.sh -n $(NAME) -m $(MAILING_LIST) -l '$(TRANSLATIONS) en' $(manpages.en.in) $(MAKE) PREFIX=`mktemp -d` install installcheck uninstall uninstallcheck install: all 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 -- cgit v1.2.3