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