diff options
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | CHANGELOG.md | 1 | ||||
-rw-r--r-- | Makefile | 8 | ||||
-rw-r--r-- | TODOs.md | 2 | ||||
-rw-r--r-- | aux/guix/manifest.scm | 2 | ||||
-rwxr-xr-x | aux/workflow/commonmark.sh | 14 | ||||
-rwxr-xr-x | aux/workflow/l10n.sh | 56 | ||||
-rwxr-xr-x | aux/workflow/public.sh | 18 |
8 files changed, 67 insertions, 37 deletions
@@ -5,3 +5,6 @@ /tests/remotes/ /tests/prefix/ /doc/*.1 +/README.*.md +/CHANGELOG.*.md +/messages.mo diff --git a/CHANGELOG.md b/CHANGELOG.md index f7f56ef..8056375 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,5 @@ <!-- Entry template: --> + <!-- # Unreleased ## Added @@ -47,16 +47,18 @@ uninstall: sh aux/workflow/manpages.sh -up $(DESTDIR)$(MANPREFIX) $(manpages) clean: - rm -rf public/ src/git-permalink $(manpages) + rm -rf public/ src/git-permalink $(manpages) README.*.md CHANGELOG.*.md messages.mo doc/po/*.po~ dist: sh aux/workflow/dist.sh -d $(DATE) -V $(VERSION) -n $(NAME) -m $(MAILING_LIST) l10n-gen: - sh aux/workflow/l10n.sh -l '$(TRANSLATIONS)' $(manpages.en.in) + ln -fs README.md README.en.md + ln -fs CHANGELOG.md CHANGELOG.en.md + sh aux/workflow/l10n.sh -l '$(TRANSLATIONS)' $(manpages.en.in) README.en.md CHANGELOG.en.md public: l10n-gen all README.md TODOs.md CHANGELOG.md - sh aux/workflow/public.sh -n $(NAME) -m $(MAILING_LIST) -o public + sh aux/workflow/public.sh -l '$(TRANSLATIONS) en' -n $(NAME) -m $(MAILING_LIST) -o public sh aux/workflow/manpages.sh -Ho public $(manpages) spellcheck: public @@ -29,7 +29,7 @@ As with manpages, the actual file will be `README.en.md`, and `README.md` is a s I should also add links to the translated versions on each translation. -This should bring an accompanying change to `aux/workflow/assert-readme.sh` and `aux/workflow/assert-changelog.sh'. +This should bring an accompanying change to `aux/workflow/assert-readme.sh` and `aux/workflow/assert-changelog.sh`. ## DONE Remove hard coded `public/` path in some files under `aux/` {#task-f09dedb7-1b25-0b5e-2520-910a9aa32562} - DONE in 2021-06-22 diff --git a/aux/guix/manifest.scm b/aux/guix/manifest.scm index f9ee4f2..b6075f4 100644 --- a/aux/guix/manifest.scm +++ b/aux/guix/manifest.scm @@ -13,7 +13,7 @@ shellcheck pandoc gettext - po4a + po4a-text hunspell hunspell-dict-en-utf8 hunspell-dict-pt-utf8 diff --git a/aux/workflow/commonmark.sh b/aux/workflow/commonmark.sh index 2333f5d..b196867 100755 --- a/aux/workflow/commonmark.sh +++ b/aux/workflow/commonmark.sh @@ -1,7 +1,7 @@ #!/bin/sh set -eu -while getopts 'N:o:r:w:' flag; do +while getopts 'N:o:r:w:L:' flag; do case "$flag" in N) PROJECT_UC="$OPTARG" @@ -15,6 +15,9 @@ while getopts 'N:o:r:w:' flag; do w) OUT_FILE="$OPTARG" ;; + L) + THE_LANG="$OPTARG" + ;; *) exit 2 ;; @@ -32,20 +35,23 @@ assert_arg() { assert_arg "${PROJECT_UC:-}" '-N PROJECT_UC' assert_arg "${OUTDIR:-}" '-o OUTDIR' assert_arg "${IN_FILE:-}" '-i IN_FILE' +assert_arg "${THE_LANG:-}" '-L THE_LANG' if [ -z "${OUT_FILE:-}" ]; then OUT_FILE="${IN_FILE%.md}.html" fi +OUT="$OUTDIR/$OUT_FILE" +mkdir -p "$(dirname "$OUT")" pandoc \ --toc \ --highlight-style pygments \ --toc-depth=2 \ -s \ - --metadata title="$PROJECT_UC - ${IN_FILE%.md}" \ - --metadata lang=en \ + --metadata title="$PROJECT_UC - ${IN_FILE%%.*}" \ + --metadata "lang=$THE_LANG" \ -r commonmark \ -w html \ -H aux/workflow/favicon.html \ - < "$IN_FILE" > "$OUTDIR/$OUT_FILE" + < "$IN_FILE" > "$OUT" diff --git a/aux/workflow/l10n.sh b/aux/workflow/l10n.sh index e1fd3bb..89f2a6e 100755 --- a/aux/workflow/l10n.sh +++ b/aux/workflow/l10n.sh @@ -1,6 +1,8 @@ #!/bin/sh set -eu +mkdir -p doc/po + LANGS= while getopts 'l:' flag; do case "$flag" in @@ -18,33 +20,39 @@ if [ -z "$LANGS" ]; then exit 2 fi -end="\033[0m" -yellow="\033[0;33m" -manpage() { - from_f="$1" - for l in $LANGS; do - to_f="$(echo "$from_f" | sed "s/\.en\./.$l./")" +po() { + format="$1" + from_f="$2" + to_f="$3" + lang="$4" + po4a-updatepo -M UTF-8 -f "$format" -m "$from_f" -p "doc/po/$lang.po" -v --previous + po4a-translate -M UTF-8 -f "$format" -m "$from_f" -p "doc/po/$lang.po" -v -L UTF-8 -l "$to_f" -k 0 >&2 +} +for from_f in "$@"; do + for lang in $LANGS; do + to_f="$(echo "$from_f" | sed "s/\.en\./.$lang./")" printf 'Generating %s...\n' "$to_f" - OUT="$(mktemp)" - po4a-updatepo -f man -m "$from_f" -p "doc/po/$l.po" - po4a-translate -f man -m "$from_f" -p "doc/po/$l.po" -l "$to_f" -k 0 -v 2>&1 | tee "$OUT" >&2 - if ! grep -qF ' is 100% translated (' "$OUT"; then - printf "\n\t${yellow}WARNING${end}!\n Missing translations for %s\n\n" "$to_f" >&2 - fi + case "$from_f" in + *.en.[1-9].in) + po man "$from_f" "$to_f" "$lang" + ;; + *.en.md|*.en.msg) + po text "$from_f" "$to_f" "$lang" + ;; + *) + echo "Unsupported file format: $from_f" >&2 + exit 2 + ;; + esac done -} +done -for f in "$@"; do - case "$f" in - *.en.[1-9].in) - mkdir -p doc/po - manpage "$f" - ;; - *) - echo "Unsupported file format: $f" >&2 - exit 2 - ;; - esac +end="\033[0m" +yellowb="\033[1;33m" +for lang in $LANGS; do + if LANG=POSIX msgfmt --statistics "doc/po/$lang.po" 2>&1 | grep translated; then + printf "\n\t${yellowb}WARNING${end}!\n Missing translations for %s\n\n" "doc/po/$lang.po" >&2 + fi done diff --git a/aux/workflow/public.sh b/aux/workflow/public.sh index ef89d07..be32ac1 100755 --- a/aux/workflow/public.sh +++ b/aux/workflow/public.sh @@ -2,7 +2,7 @@ set -eu PROJECT_UC= -while getopts 'n:N:m:o:' flag; do +while getopts 'n:N:m:o:l:' flag; do case "$flag" in n) PROJECT="$OPTARG" @@ -16,6 +16,9 @@ while getopts 'n:N:m:o:' flag; do o) OUTDIR="$OPTARG" ;; + l) + LANGS="$OPTARG" + ;; *) exit 2 ;; @@ -41,12 +44,19 @@ fi mkdir -p "$OUTDIR" sh aux/workflow/TODOs.sh -N "$PROJECT_UC" -n "$PROJECT" -m "$MAILING_LIST" -o "$OUTDIR" -sh aux/workflow/commonmark.sh -N "$PROJECT" -o "$OUTDIR" -r README.md -w index.html +sh aux/workflow/commonmark.sh -N "$PROJECT" -o "$OUTDIR" -r README.md -w index.html -Len if [ -f CHANGELOG.md ]; then - sh aux/workflow/commonmark.sh -N "$PROJECT" -o "$OUTDIR" -r CHANGELOG.md + sh aux/workflow/commonmark.sh -N "$PROJECT" -o "$OUTDIR" -r CHANGELOG.md -Len +fi +if [ -n "${LANGS:-}" ]; then + for lang in $LANGS; do + sh aux/workflow/commonmark.sh -N "$PROJECT" -o "$OUTDIR" -r "README.$lang.md" -w "$lang/index.html" -L "$lang" + if [ -f CHANGELOG.md ]; then + sh aux/workflow/commonmark.sh -N "$PROJECT" -o "$OUTDIR" -r "CHANGELOG.$lang.md" -w "$lang/CHANGELOG.html" -L "$lang" + fi + done fi sh aux/ci/report.sh -n "$PROJECT" -o "$OUTDIR" - cp aux/workflow/favicon.svg aux/workflow/favicon.png "$OUTDIR" |