From cc22837a293d13e09fa6a510e370d7d03643c6d4 Mon Sep 17 00:00:00 2001 From: Matthias Andree Date: Mon, 26 Aug 2019 18:48:02 +0200 Subject: Helper script to commit PO updates to Git. --- dist-tools/git-commit-po-updates.sh | 43 +++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100755 dist-tools/git-commit-po-updates.sh diff --git a/dist-tools/git-commit-po-updates.sh b/dist-tools/git-commit-po-updates.sh new file mode 100755 index 00000000..1c2079fe --- /dev/null +++ b/dist-tools/git-commit-po-updates.sh @@ -0,0 +1,43 @@ +#!/bin/sh +set -eu + +# see if Perl has Carp::Always available: +perl -MCarp::Always -e '' + +git diff -G ^.Project-Id-Version --name-only po/*.po \ +| while read pofile ; do + if ! cmd="$(perl -WT - "$pofile" <<'_EOF' +use strict; +use Carp::Always (); +use warnings FATAL => 'uninitialized'; +my ($ver, $dat, $trl, $lang, $lcod, $found); + +while(<>) +{ + if (/^"Project-Id-Version: (.+)\\n"/) { $ver=$1 }; + if (/^"PO-Revision-Date: (.+)\\n"/) { $dat=$1 }; + if (/^"Last-Translator: (.+)\\n"/) { $trl=$1 }; + if (/^"Language-Team: ([^<]+?)\s+<.*>\\n"/) + { $lang=$1 }; + if (/^"Language: (.+)\\n"/) { $lcod=$1 }; + if ($ver and $dat and $trl and $lang and $lcod) { + $found = 1; + last; + } +} + +if ($found) { + print "git commit --author '$trl' --date '$dat' -m 'Update <$lcod> $lang translation to $ver'" +} else { + exit(1); +} +_EOF +)" + then + echo >&2 "Parsing $pofile failed, skipping." + continue + fi + cmd="$cmd '$pofile'" + printf '+ %s\n' "$cmd" + eval "$cmd" +done -- cgit v1.2.3