diff options
-rw-r--r-- | Makefile | 16 | ||||
-rw-r--r-- | README.md | 8 | ||||
-rwxr-xr-x | aux/workflow/manpages.sh | 53 | ||||
-rwxr-xr-x | aux/workflow/update-translations.sh | 16 |
4 files changed, 62 insertions, 31 deletions
@@ -7,9 +7,6 @@ NAME = git-permalink MAILING_LIST = public-inbox TRANSLATIONS = pt fr eo -manpages = \ - doc/git-permalink.1 - all: git-permalink git-permalink: src/git-permalink.sh @@ -24,6 +21,7 @@ dev-check: check sh aux/workflow/assert-todos.sh sh aux/workflow/assert-changelog.sh $(NAME) $(NAME) sh aux/workflow/assert-readme.sh $(NAME) $(MAILING_LIST) + sh aux/workflow/manpages.sh '$(TRANSLATIONS)' --update sh aux/workflow/assert-manpages.sh $(NAME) $(MAILING_LIST) do_subst = sed \ @@ -33,15 +31,11 @@ do_subst = sed \ install: all mkdir -p $(DESTDIR)$(PREFIX)/bin cp git-permalink $(DESTDIR)$(PREFIX)/bin/$(NAME) - for m in $(manpages); do \ - n=$${m##*.}; \ - mkdir -p $(DESTDIR)$(MANPREFIX)/man$$n; \ - $(do_subst) < $$m > $(DESTDIR)$(MANPREFIX)/man$$n/`basename $$m`; \ - done + sh aux/workflow/manpages.sh '$(TRANSLATIONS)' --install '$(DESTDIR)$(MANPREFIX)' -- $(do_subst) uninstall: rm -f $(DESTDIR)$(PREFIX)/bin/$(NAME) - for m in $(manpages); do rm -f $(DESTDIR)$(MANPREFIX)/man$${m##*.}/`basename $$m`; done + sh aux/workflow/manpages.sh '$(TRANSLATIONS)' --uninstall '$(DESTDIR)$(MANPREFIX)' clean: rm -rf public/ git-permalink @@ -49,6 +43,6 @@ clean: dist: sh aux/workflow/dist.sh $(DATE) $(VERSION) $(NAME) -public: README.md TODOs.md CHANGELOG.md $(manpages) +public: README.md TODOs.md CHANGELOG.md sh aux/workflow/public.sh $(NAME) $(NAME) $(MAILING_LIST) - for m in $(manpages); do $(do_subst) < $$m | pandoc -s -r man -w html > public/`basename $$m`.html; done + sh aux/workflow/manpages.sh '$(TRANSLATIONS)' --html '' -- $(do_subst) @@ -52,10 +52,10 @@ There are no dependencies or requirements, only standard tools such as The documentation is available via installed manpages or online: [`git-permalink.1`] ([pt], [fr], [eo]). -[`git-permalink.1`]: https://euandreh.xyz/git-permalink/git-permalink.en.1.html -[pt]: https://euandreh.xyz/git-permalink/git-permalink.pt.1.html -[fr]: https://euandreh.xyz/git-permalink/git-permalink.fr.1.html -[eo]: https://euandreh.xyz/git-permalink/git-permalink.eo.1.html +[`git-permalink.1`]: https://euandreh.xyz/git-permalink/en/git-permalink.1.html +[pt]: https://euandreh.xyz/git-permalink/pt/git-permalink.1.html +[fr]: https://euandreh.xyz/git-permalink/fr/git-permalink.1.html +[eo]: https://euandreh.xyz/git-permalink/eo/git-permalink.1.html ## Contributing diff --git a/aux/workflow/manpages.sh b/aux/workflow/manpages.sh new file mode 100755 index 0000000..de3cef9 --- /dev/null +++ b/aux/workflow/manpages.sh @@ -0,0 +1,53 @@ +#!/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" + $@ < "$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" + $@ < "$filefrom_name" | pandoc -s -r man -w html > "public/$lang/$fileto_name.html" + ;; + *) + echo "Unsupported operation: $OP" + exit 2 + ;; + esac + done + done +fi diff --git a/aux/workflow/update-translations.sh b/aux/workflow/update-translations.sh deleted file mode 100755 index 1974580..0000000 --- a/aux/workflow/update-translations.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh -set -eu - -for f in doc/*.en.[1-9]; do - # shellcheck disable=2068 - for lang in $@; 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 |