diff options
author | Alexander Larsson <alexl@redhat.com> | 2018-03-14 09:50:51 +0100 |
---|---|---|
committer | Alexander Larsson <alexl@redhat.com> | 2018-03-14 09:50:51 +0100 |
commit | 364841536ef9711145781084be64d3034c4c028f (patch) | |
tree | d439484885035061483c3aeeb0bc47128d08edda | |
parent | 8dc121ffa40250cfab463d3cb53ef4455421e88e (diff) |
Add git-tp-sync script
-rwxr-xr-x | git-tp-sync | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/git-tp-sync b/git-tp-sync new file mode 100755 index 0000000..5e1c602 --- /dev/null +++ b/git-tp-sync @@ -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="xdg-user-dirs" +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 + |