From 01d8587077c1b9b2a27a6ef39c8aaba833d50be9 Mon Sep 17 00:00:00 2001 From: Andreas Jaeger Date: Sat, 24 May 2014 20:23:05 +0200 Subject: [PATCH] Create common translation functions Currently there's a lot of duplicated code between the translation scripts. This is an initial step in creation of a common library that avoids the duplication. Move the setup of git and transifex in the various propose_translation and upstream_translation into new functions in the new file common_translation_update.sh and source the library and use the functions. Change-Id: I7831909e780e6f683bbc7c2fd67f46232d9d1fdc --- .../common_translation_update.sh | 91 +++++++++++++++++++ .../propose_translation_update.sh | 42 ++------- .../propose_translation_update_horizon.sh | 40 +------- .../propose_translation_update_manuals.sh | 43 ++------- .../upstream_translation_horizon.sh | 10 +- .../upstream_translation_update.sh | 11 +-- .../upstream_translation_update_manuals.sh | 9 +- 7 files changed, 119 insertions(+), 127 deletions(-) create mode 100644 modules/openstack_project/files/slave_scripts/common_translation_update.sh diff --git a/modules/openstack_project/files/slave_scripts/common_translation_update.sh b/modules/openstack_project/files/slave_scripts/common_translation_update.sh new file mode 100644 index 0000000000..cadb3ed0a1 --- /dev/null +++ b/modules/openstack_project/files/slave_scripts/common_translation_update.sh @@ -0,0 +1,91 @@ +#!/bin/bash -xe +# Common code used by propose_translation_update.sh and +# upstream_translation_update.sh + +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +# Initial transifex setup +function setup_translation () +{ + + # Initialize the transifex client, if there's no .tx directory + if [ ! -d .tx ] ; then + tx init --host=https://www.transifex.com + fi +} + +# Setup a project for transifex +function setup_project () +{ + project=$1 + + tx set --auto-local -r ${project}.${project}-translations \ + "${project}/locale//LC_MESSAGES/${project}.po" \ + --source-lang en \ + --source-file ${project}/locale/${project}.pot -t PO \ + --execute +} + +# Setup git so that git review works +function setup_git () +{ + git config user.name "OpenStack Proposal Bot" + git config user.email "openstack-infra@lists.openstack.org" + git config gitreview.username "proposal-bot" +} + +# Setup project so that git review works, sets global variable +# COMMIT_MSG. +function setup_review () +{ + ORG="$1" + PROJECT="$2" + + COMMIT_MSG="Imported Translations from Transifex" + + 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 proposal-bot@review.openstack.org gerrit query --current-patch-set status:open project:$ORG/$PROJECT topic:transifex/translations owner:proposal-bot` + 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 returns 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 </LC_MESSAGES/${PROJECT}.po" --source-lang en --source-file ${PROJECT}/locale/${PROJECT}.pot -t PO --execute +setup_review "$ORG" "$PROJECT" +setup_translation +setup_project "$PROJECT" # Pull upstream translations of files that are at least 75 % # translated @@ -73,12 +51,4 @@ do fi done -# Don't send a review if nothing has changed. -if [ `git diff --cached |wc -l` -gt 0 ] -then - # Commit and review - git commit -F- </LC_MESSAGES/djangojs.po" --source-lang en \ diff --git a/modules/openstack_project/files/slave_scripts/upstream_translation_update.sh b/modules/openstack_project/files/slave_scripts/upstream_translation_update.sh index e93d6b5d15..41edb5939a 100755 --- a/modules/openstack_project/files/slave_scripts/upstream_translation_update.sh +++ b/modules/openstack_project/files/slave_scripts/upstream_translation_update.sh @@ -19,14 +19,11 @@ then exit 0 fi -git config user.name "OpenStack Jenkins" -git config user.email "jenkins@openstack.org" +source /usr/local/jenkins/slave_scripts/common_translation_update.sh -# Initialize the transifex client, if there's no .tx directory -if [ ! -d .tx ] ; then - tx init --host=https://www.transifex.com -fi -tx set --auto-local -r ${PROJECT}.${PROJECT}-translations "${PROJECT}/locale//LC_MESSAGES/${PROJECT}.po" --source-lang en --source-file ${PROJECT}/locale/${PROJECT}.pot -t PO --execute +setup_git +setup_translation +setup_project "$PROJECT" # Update the .pot file python setup.py extract_messages diff --git a/modules/openstack_project/files/slave_scripts/upstream_translation_update_manuals.sh b/modules/openstack_project/files/slave_scripts/upstream_translation_update_manuals.sh index d3d5735bc4..7d5e4920f4 100755 --- a/modules/openstack_project/files/slave_scripts/upstream_translation_update_manuals.sh +++ b/modules/openstack_project/files/slave_scripts/upstream_translation_update_manuals.sh @@ -28,13 +28,10 @@ then exit 0 fi -git config user.name "OpenStack Jenkins" -git config user.email "jenkins@openstack.org" +source /usr/local/jenkins/slave_scripts/common_translation_update.sh -# Initialize the transifex client, if there's no .tx directory -if [ ! -d .tx ] ; then - tx init --host=https://www.transifex.com -fi +setup_git +setup_translation # Generate pot one by one for FILE in ${DocFolder}/*