project-config/jenkins/scripts/propose_translation_update.sh
Akihiro Motoki 2da8eb7f10 Use new translation setup for all horizon plugin repos
New django translation setup scripts can applied to all
horizon related repositories. The exceptions are horizon
and django_openstack_auth.

This fixes the failure in the re-enabled trove-dashboard
translation jobs. We should do this before re-enabling it.

Change-Id: I90015ccf531db9f62a54d5b5c022886798db73be
Story: 2000452
2016-01-29 18:04:37 +01:00

261 lines
7.9 KiB
Bash
Executable File

#!/bin/bash -xe
# 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.
PROJECT=$1
BRANCH=$2
# Replace /'s in the branch name with -'s because Zanata does not
# allow /'s in version names.
ZANATA_VERSION=${BRANCH//\//-}
source /usr/local/jenkins/slave_scripts/common_translation_update.sh
# Propose updates for manuals
function propose_manuals {
# Pull updated translations from Zanata.
pull_from_zanata "$PROJECT"
# Compress downloaded po files
# Only touch glossary in openstack-manuals but not in any other
# repository.
case "$PROJECT" in
openstack-manuals)
compress_manual_po_files "doc" 1
;;
api-site)
compress_manual_po_files "api-ref-guides" 0
compress_manual_po_files "api-quick-start" 0
compress_manual_po_files "api-ref" 0
compress_manual_po_files "openstack-firstapp" 0
;;
ha-guide|operations-guide)
compress_manual_po_files "doc" 0
;;
security-doc)
compress_manual_po_files "security-guide" 0
;;
esac
# Add imported upstream translations to git
for FILE in ${DocFolder}/*; do
DOCNAME=${FILE#${DocFolder}/}
if [ -d ${DocFolder}/${DOCNAME}/locale ] ; then
git add ${DocFolder}/${DOCNAME}/locale/*
fi
if [ -d ${DocFolder}/${DOCNAME}/source/locale ] ; then
git add ${DocFolder}/${DOCNAME}/source/locale/*
fi
done
}
# Propose updates for training-guides
function propose_training_guides {
# Pull updated translations from Zanata.
pull_from_zanata "$PROJECT"
# Compress downloaded po files
compress_po_files "doc/upstream-training"
# Add all changed files to git
git add doc/upstream-training/source/locale/*
}
# Propose updates for python projects
function propose_python {
# Pull updated translations from Zanata
pull_from_zanata "$PROJECT"
# Extract all messages from project, including log messages.
extract_messages "$PROJECT"
extract_messages_log "$PROJECT"
# Now add all changed files to git.
# Note we add them here to not have to differentiate in the functions
# between new files and files already under git control.
git add $PROJECT/locale/*
# Remove obsolete files.
cleanup_po_files "$PROJECT"
# Compress downloaded po files, this needs to be done after
# cleanup_po_files since that function needs to have information the
# number of untranslated strings.
compress_po_files "$PROJECT"
# Some files were changed, add changed files again to git, so that we
# can run git diff properly.
git add $PROJECT/locale/*
}
# TODO(amotoki): Finally this should replace current propose_python.
function propose_python_new {
local project=$1
local modulename=$2
# Pull updated translations from Zanata
pull_from_zanata "$project"
# Extract all messages from project, including log messages.
extract_messages_new "$modulename"
extract_messages_log_new "$modulename"
# Now add all changed files to git.
# Note we add them here to not have to differentiate in the functions
# between new files and files already under git control.
git add $modulename/locale/*
# Remove obsolete files.
cleanup_po_files "$modulename"
# Compress downloaded po files, this needs to be done after
# cleanup_po_files since that function needs to have information the
# number of untranslated strings.
compress_po_files "$modulename"
# Some files were changed, add changed files again to git, so that we
# can run git diff properly.
git add $modulename/locale/*
}
function propose_horizon {
# Pull updated translations from Zanata.
pull_from_zanata "$PROJECT"
# Invoke run_tests.sh to update the po files
# Or else, "../manage.py makemessages" can be used.
./run_tests.sh --makemessages -V
# Compress downloaded po files
compress_po_files "horizon"
compress_po_files "openstack_dashboard"
# Add all changed files to git
git add horizon/locale/* openstack_dashboard/locale/*
}
function propose_django_openstack_auth {
# Pull updated translations from Zanata.
pull_from_zanata "$PROJECT"
# Update the .pot file
extract_messages "openstack_auth"
# Compress downloaded po files
compress_po_files "openstack_auth"
# Add all changed files to git
git add openstack_auth/locale/*
}
# This function can be used for all django projects
function propose_django {
local project=$1
local modulename=$2
# Pull updated translations from Zanata.
pull_from_zanata "$project"
# Update the .pot file
extract_messages_django "$modulename"
# Compress downloaded po files
compress_po_files "$modulename"
# Add all changed files to git
git add $modulename/locale/*
}
# Setup git repository for git review.
setup_git
# Check whether a review already exists, setup review commit message.
setup_review "$BRANCH"
case "$PROJECT" in
api-site|ha-guide|openstack-manuals|operations-guide|security-doc)
init_manuals "$PROJECT"
setup_manuals "$PROJECT" "$ZANATA_VERSION"
propose_manuals
;;
training-guides)
setup_training_guides "$ZANATA_VERSION"
propose_training_guides
;;
django_openstack_auth)
# NOTE: Once POT file and Zanata resource name are renamed
# from openstack_auth(.pot) to django(.pot), the below can be used.
# setup_django django_openstack_auth openstack_auth "$ZANATA_VERSION"
setup_django_openstack_auth "$ZANATA_VERSION"
# NOTE: Once django_openstack_auth repo has babel-django.cfg,
# the below can be used.
# propose_django django_openstack_auth openstack_auth
propose_django_openstack_auth
;;
horizon)
setup_horizon "$ZANATA_VERSION"
propose_horizon
;;
# New setup: all dashboard plugin repositories plus others
*-dashboard|*-ui|*-horizon|python-neutronclient|python-novaclient)
# ---- Python projects ----
# NOTE: At now POT file == $modulename/locale/$modulename.pot
# so this script works.
# TODO(amotoki):
# * Move POT/PO file to $modulename/locale/$modulename.pot
# * Update setup.cfg (babel related)
# * Rename Zanata resource
MODULENAME=$(get_modulename $PROJECT python)
if [ -n "$MODULENAME" ]; then
setup_django "$PROJECT" "$MODULENAME" "$ZANATA_VERSION"
propose_python_new "$PROJECT" "$MODULENAME"
fi
# ---- Django projects ----
MODULENAME=$(get_modulename $PROJECT django)
if [ -n "$MODULENAME" ]; then
setup_django "$PROJECT" "$MODULENAME" "$ZANATA_VERSION"
propose_django "$PROJECT" "$MODULENAME"
fi
;;
python-*)
echo "project temporarily disabled"
exit 0
;;
oslo.*)
echo "project temporarily disabled"
exit 0
;;
ironic-inspector|networking-*|neutron-*|vmware-nsx)
echo "project temporarily disabled"
exit 0
;;
*)
# Project specific setup.
setup_project "$PROJECT" "$ZANATA_VERSION"
# Setup some global vars which will be used in the rest of the
# script.
setup_loglevel_vars
propose_python
;;
esac
# Filter out commits we do not want.
filter_commits
# Propose patch to gerrit if there are changes.
send_patch "$BRANCH"