| #!/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 | |