#!/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 ;; # Test of translation setup improvement murano-dashboard|magnum-ui|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 ;; *) # 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"