system-config/modules/jenkins/files/slave_scripts/propose_translation_update.sh
Clark Boylan 7d018cc4b4 Push src and tx files to transifex separately.
Push the source (.pot) file independently of the translation (.po) files
so that we can disable set -e when pushing the .po files.

Previously pushing the .po files would fail the entire test if one of
the pushed files contained no translations. This would also prevent
other translation files from being pushed. Now push the .pot file
separately so that a failure pushing that file still fails the test, but
errors pushing the translation files can be ignored. Also add the --skip
option to the translation push which will allow all valid translations
to be pushed even if some fail.

Change-Id: I8958c29113ce5d21a0b281ee13abe94d477fb04c
Reviewed-on: https://review.openstack.org/13385
Reviewed-by: James E. Blair <corvus@inaugust.com>
Approved: Clark Boylan <clark.boylan@gmail.com>
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Tested-by: Jenkins
2012-09-20 20:53:33 +00:00

61 lines
2.0 KiB
Bash
Executable File

#!/bin/bash -xe
PROJECT=$1
COMMIT_MSG="Imported Translations from Transifex"
git config user.name "OpenStack Jenkins"
git config user.email "jenkins@openstack.org"
git config gitreview.username "jenkins"
git review -s
# See if there is an open change in the transifex/translations topic
# If so, get the change id for the existing change for use in the commit msg.
change_info=`ssh -p 29418 review.openstack.org gerrit query --current-patch-set status:open project:openstack/$PROJECT topic:transifex/translations owner:jenkins`
previous=`echo "$change_info" | grep "^ number:" | awk '{print $2}'`
if [ "x${previous}" != "x" ] ; then
change_id=`echo "$change_info" | grep "^change" | awk '{print $2}'`
# read return a non zero value when it reaches EOF. Because we use a
# heredoc here it will always reach EOF and return a nonzero value.
# Disable -e temporarily to get around the read.
set +e
read -d '' COMMIT_MSG <<EOF
Imported Translations from Transifex
Change-Id: $change_id
EOF
set -e
fi
# initialize transifex client
tx init --host=https://www.transifex.com
tx set --auto-local -r ${PROJECT}.${PROJECT}-translations "${PROJECT}/locale/<lang>/LC_MESSAGES/${PROJECT}.po" --source-lang en --source-file ${PROJECT}/locale/${PROJECT}.pot --execute
# Pull all upstream translations
tx pull -a
# Update the .pot file
python setup.py extract_messages
# Use updated .pot file to update translations
python setup.py update_catalog
# Add all changed files to git
git add $PROJECT/locale/*
if [ ! `git diff-index --quiet HEAD --` ]
then
# Commit and review
git commit -F- <<EOF
$COMMIT_MSG
EOF
git review -t transifex/translations
# Push .pot changes to transifex
tx --debug --traceback push -s
# Push translation changes to transifex
# Disable -e as we can live with failed translation pushes (failures
# occur when a translation file has no translations in it not really
# error worthy but they occur)
set +e
tx --debug --traceback push -t --skip
set -e
fi