aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile16
-rw-r--r--README.md8
-rwxr-xr-xaux/workflow/manpages.sh53
-rwxr-xr-xaux/workflow/update-translations.sh16
4 files changed, 62 insertions, 31 deletions
diff --git a/Makefile b/Makefile
index 38522c0..9b0d3aa 100644
--- a/Makefile
+++ b/Makefile
@@ -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)
diff --git a/README.md b/README.md
index 8836ca3..8905186 100644
--- a/README.md
+++ b/README.md
@@ -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