]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
tools: add script to load .po from translationproject.org
authorKarel Zak <kzak@redhat.com>
Wed, 25 May 2016 13:28:42 +0000 (15:28 +0200)
committerKarel Zak <kzak@redhat.com>
Wed, 25 May 2016 13:28:42 +0000 (15:28 +0200)
I use it for years, let's keep it in the repository.

Signed-off-by: Karel Zak <kzak@redhat.com>
tools/git-tp-sync [new file with mode: 0755]

diff --git a/tools/git-tp-sync b/tools/git-tp-sync
new file mode 100755 (executable)
index 0000000..c2e2d8d
--- /dev/null
@@ -0,0 +1,58 @@
+#!/bin/bash
+#
+# git-tp-sync - downloads the latest PO files from translationproject.org
+#               and commits changes to your GIT repository.
+#
+# Features:
+#             - commit per PO file (no more huge commits for all .po files)
+#             - the commit "Author:" field is set according to the Last-Translator
+#
+# Copyright (C) 2007-2016 Karel Zak <kzak@redhat.com>
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This file is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+
+PROJECT="util-linux"
+if [ -n "$1" ]; then
+       while (( "$#" )); do
+               if [ -n "$1" ]; then
+                       rsync  -Lrtvz  rsync://translationproject.org/tp/latest/$PROJECT/$1.po po
+               fi
+               shift
+       done
+else
+       rsync  -Lrtvz  rsync://translationproject.org/tp/latest/$PROJECT/ po
+fi
+
+PO_NEW=$(git ls-files -o | gawk '/po\/[[:alpha:]_\-]*\.po/ { sub("po/", ""); print $0; }' | sort)
+PO_MOD=$(git ls-files -m | gawk '/po\/[[:alpha:]_\-]*\.po/ { sub("po/", ""); print $0; }' | sort)
+
+function get_author {
+       echo $(gawk 'BEGIN { FS=": " } /Last-Translator/ { sub("\\\\n\"", ""); print $2 }' "$1")
+}
+
+function do_commit {
+       local POFILE="$1"
+       local MSG="$2"
+       local AUTHOR=$(get_author "$POFILE")
+
+       git commit --author "$AUTHOR" -m "$MSG" "$POFILE"
+}
+
+for f in $PO_MOD; do
+       do_commit "po/$f" "po: update $f (from translationproject.org)"
+done
+
+for f in $PO_NEW; do
+       git add "po/$f"
+       do_commit "po/$f" "po: add $f (from translationproject.org)"
+done
+