From 2ce411f7f69bbaa9ccef2bfed7de1d4024cc9263 Mon Sep 17 00:00:00 2001 From: Akihiro Motoki Date: Tue, 16 Feb 2016 22:57:44 +0900 Subject: [PATCH] Translation job scripts support multiple python modules At now, horizon repo has two python modules and we have special handling in the translation job scripts. This commit handles multiple python modules per repository and locale directory will be prepared per python module. After this we no longer need to have dedicated functions for horizon. Change-Id: Id32fbf37489c0056e5d7722fc3e7c71a95213e08 --- jenkins/scripts/common_translation_update.sh | 40 ++++++------- jenkins/scripts/get-modulename.py | 15 ++--- jenkins/scripts/propose_translation_update.sh | 56 ++++++------------- .../scripts/upstream_translation_update.sh | 26 ++++----- 4 files changed, 57 insertions(+), 80 deletions(-) diff --git a/jenkins/scripts/common_translation_update.sh b/jenkins/scripts/common_translation_update.sh index 1c86b73bf8..7070a7c460 100644 --- a/jenkins/scripts/common_translation_update.sh +++ b/jenkins/scripts/common_translation_update.sh @@ -34,33 +34,29 @@ function get_modulename { -p $project -t $target } -# Setup a project for Zanata. This is used by both Python and Django -# projects. +# Setup a project for Zanata. This is used by both Python and Django projects. +# syntax: setup_project [ ...] function setup_project { local project=$1 - local modulename=$2 - local version=${3:-master} - - /usr/local/jenkins/slave_scripts/create-zanata-xml.py \ - -p $project -v $version --srcdir $modulename/locale \ - --txdir $modulename/locale -r '**/*.pot' \ - '{locale_with_underscore}/LC_MESSAGES/{filename}.po' -f zanata.xml + local version=$2 + shift 2 + # All argument(s) contain module names now. + if [ $# -eq 1 ]; then + local modulename=$1 + /usr/local/jenkins/slave_scripts/create-zanata-xml.py \ + -p $project -v $version --srcdir $modulename/locale \ + --txdir $modulename/locale \ + -r '**/*.pot' '{locale_with_underscore}/LC_MESSAGES/{filename}.po' \ + -f zanata.xml + else + /usr/local/jenkins/slave_scripts/create-zanata-xml.py \ + -p $project -v $version --srcdir . --txdir . \ + -r '**/*.pot' '{path}/{locale_with_underscore}/LC_MESSAGES/{filename}.po' \ + -f zanata.xml + fi } -# Setup project horizon for Zanata -function setup_horizon { - local project=horizon - local version=${1:-master} - - /usr/local/jenkins/slave_scripts/create-zanata-xml.py -p $project \ - -v $version --srcdir . --txdir . -r './horizon/locale/*.pot' \ - 'horizon/locale/{locale_with_underscore}/LC_MESSAGES/{filename}.po' \ - -r './openstack_dashboard/locale/*.pot' \ - 'openstack_dashboard/locale/{locale_with_underscore}/LC_MESSAGES/{filename}.po' \ - -e '.*/**' -f zanata.xml -} - # Set global variable DocFolder for manuals projects function init_manuals { project=$1 diff --git a/jenkins/scripts/get-modulename.py b/jenkins/scripts/get-modulename.py index b07e11a661..dc7cc602a8 100755 --- a/jenkins/scripts/get-modulename.py +++ b/jenkins/scripts/get-modulename.py @@ -20,10 +20,11 @@ import os import sys -DJANGO_PROJECT_SUFFIXES = ('-dashboard', - '-horizon', - '-ui', - 'django_openstack_auth', +DJANGO_PROJECT_SUFFIXES = ( + '-dashboard', + 'horizon', # to match horizon and *-horizon + '-ui', + 'django_openstack_auth', ) @@ -100,13 +101,13 @@ def main(): if 'openstack_translations' in config: translate_options = get_translate_options(config, args.target) - return translate_options + print(' '.join(translate_options)) + return modules = get_valid_modules(config, args.project, args.target) - # A shortest module name is selected now. if modules: - print(sorted(modules, key=len)[0]) + print(' '.join(modules)) if __name__ == '__main__': main() diff --git a/jenkins/scripts/propose_translation_update.sh b/jenkins/scripts/propose_translation_update.sh index 0a38155b9b..4623e182f4 100755 --- a/jenkins/scripts/propose_translation_update.sh +++ b/jenkins/scripts/propose_translation_update.sh @@ -74,11 +74,7 @@ function propose_training_guides { # Propose updates for python projects function propose_python { - local project=$1 - local modulename=$2 - - # Pull updated translations from Zanata - pull_from_zanata "$project" + local modulename=$1 # Extract all messages from project, including log messages. extract_messages "$modulename" @@ -102,29 +98,9 @@ function propose_python { 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/ -} - # 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" + local modulename=$1 # Update the .pot file extract_messages_django "$modulename" @@ -152,25 +128,29 @@ case "$PROJECT" in setup_training_guides "$ZANATA_VERSION" propose_training_guides ;; - horizon) - setup_horizon "$ZANATA_VERSION" - propose_horizon - ;; *) # Common setup for python and django repositories # ---- Python projects ---- - MODULENAME=$(get_modulename $PROJECT python) - if [ -n "$MODULENAME" ]; then - setup_project "$PROJECT" "$MODULENAME" "$ZANATA_VERSION" + module_names=$(get_modulename $PROJECT python) + if [ -n "$module_names" ]; then + setup_project "$PROJECT" "$ZANATA_VERSION" $module_names setup_loglevel_vars - propose_python "$PROJECT" "$MODULENAME" + # Pull updated translations from Zanata + pull_from_zanata "$PROJECT" + for modulename in $module_names; do + propose_python "$modulename" + done fi # ---- Django projects ---- - MODULENAME=$(get_modulename $PROJECT django) - if [ -n "$MODULENAME" ]; then - setup_project "$PROJECT" "$MODULENAME" "$ZANATA_VERSION" - propose_django "$PROJECT" "$MODULENAME" + module_names=$(get_modulename $PROJECT django) + if [ -n "$module_names" ]; then + setup_project "$PROJECT" "$ZANATA_VERSION" $module_names + # Pull updated translations from Zanata. + pull_from_zanata "$PROJECT" + for modulename in $module_names; do + propose_django "$modulename" + done fi ;; esac diff --git a/jenkins/scripts/upstream_translation_update.sh b/jenkins/scripts/upstream_translation_update.sh index adfb97a064..c68ef14d2a 100755 --- a/jenkins/scripts/upstream_translation_update.sh +++ b/jenkins/scripts/upstream_translation_update.sh @@ -40,26 +40,26 @@ case "$PROJECT" in training-guides) setup_training_guides "$ZANATA_VERSION" ;; - horizon) - setup_horizon "$ZANATA_VERSION" - ./run_tests.sh --makemessages -V - ;; *) # Common setup for python and django repositories # ---- Python projects ---- - MODULENAME=$(get_modulename $PROJECT python) - if [ -n "$MODULENAME" ]; then - setup_project "$PROJECT" "$MODULENAME" "$ZANATA_VERSION" + module_names=$(get_modulename $PROJECT python) + if [ -n "$module_names" ]; then + setup_project "$PROJECT" "$ZANATA_VERSION" $module_names setup_loglevel_vars - extract_messages "$MODULENAME" - extract_messages_log "$MODULENAME" + for modulename in $module_names; do + extract_messages "$modulename" + extract_messages_log "$modulename" + done fi # ---- Django projects ---- - MODULENAME=$(get_modulename $PROJECT django) - if [ -n "$MODULENAME" ]; then - setup_project "$PROJECT" "$MODULENAME" "$ZANATA_VERSION" - extract_messages_django "$MODULENAME" + module_names=$(get_modulename $PROJECT django) + if [ -n "$module_names" ]; then + setup_project "$PROJECT" "$ZANATA_VERSION" $module_names + for modulename in $module_names; do + extract_messages_django "$modulename" + done fi ;; esac