From dc21d725b253846fca8ff3daca6f0351999b11ef Mon Sep 17 00:00:00 2001
From: daisy-ycguo <guoyingc@cn.ibm.com>
Date: Mon, 1 Apr 2013 16:20:04 +0800
Subject: [PATCH] Add script to upload/download translation resources of
 manuals.

Add two new translation jobs for manulas translation uploading and downloading

Bug 1162701

Change-Id: I2a07d588a85fad1c780984b3635b0795495e56f2
Reviewed-on: https://review.openstack.org/25810
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Reviewed-by: Paul Belanger <paul.belanger@polybeacon.com>
Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
Reviewed-by: matthew-wagoner <matthew.wagoner@hp.com>
Approved: Jeremy Stanley <fungi@yuggoth.org>
Tested-by: Jenkins
---
 .../propose_translation_update_manuals.sh     | 97 +++++++++++++++++++
 .../upstream_translation_update_manuals.sh    | 61 ++++++++++++
 .../config/translation-jobs.yaml              | 41 ++++++++
 .../openstack_project/files/zuul/layout.yaml  |  3 +
 4 files changed, 202 insertions(+)
 create mode 100755 modules/jenkins/files/slave_scripts/propose_translation_update_manuals.sh
 create mode 100755 modules/jenkins/files/slave_scripts/upstream_translation_update_manuals.sh

diff --git a/modules/jenkins/files/slave_scripts/propose_translation_update_manuals.sh b/modules/jenkins/files/slave_scripts/propose_translation_update_manuals.sh
new file mode 100755
index 0000000000..0fc3eefe39
--- /dev/null
+++ b/modules/jenkins/files/slave_scripts/propose_translation_update_manuals.sh
@@ -0,0 +1,97 @@
+#!/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="openstack-manuals"
+DocNameList="basic-install cli-guide common openstack-block-storage-admin \
+openstack-compute-admin openstack-ha openstack-install \
+openstack-network-connectivity-admin openstack-object-storage-admin \
+openstack-ops"
+
+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
+
+# no need to initialize transifex client
+# because there is an existing .tx folder in openstack-manuals
+# tx init --host=https://www.transifex.com
+
+# generate pot one by one
+for DOCNAME in ${DocNameList}
+do
+    tx set --auto-local -r openstack-manuals-i18n.${DOCNAME} \
+"doc/src/docbkx/${DOCNAME}/locale/<lang>.po" --source-lang en \
+--source-file doc/src/docbkx/${DOCNAME}/locale/${DOCNAME}.pot \
+-t PO --execute
+    # openstack-ha needs to create new DocBook files
+    if [ "$DOCNAME" == "openstack-ha" ]
+    then
+        asciidoc -b docbook -d book -o - doc/src/docbkx/openstack-ha/ha-guide.txt \
+| xsltproc -o - /usr/share/xml/docbook/stylesheet/docbook5/db4-upgrade.xsl - \
+| xmllint  --format - | sed -e 's,<book,<book xml:id="bk-ha-guide",' \
+| sed -e 's,<info,<?rax pdf.url="../openstack-ha-guide-trunk.pdf"?><info,' \
+> doc/src/docbkx/openstack-ha/bk-ha-guide.xml
+    fi
+    # Update the .pot file
+    ./tools/generatepot ${DOCNAME}
+    # Add all changed files to git
+    git add doc/src/docbkx/${DOCNAME}/locale/*
+done
+
+if [ ! `git diff --cached --quiet HEAD --` ]
+then
+    # Push .pot changes to transifex
+    tx --debug --traceback push -s
+fi
+
+# Pull all upstream translations
+tx pull -a
+
+for DOCNAME in ${DocNameList}
+do
+    git add doc/src/docbkx/${DOCNAME}/locale/*
+done
+
+# Don't send a review if the only things which have changed are the creation
+# date or comments.
+if [ `git diff --cached | egrep -v "(POT-Creation-Date|^[\+\-]#|^\+{3}|^\-{3})" | egrep -c "^[\-\+]"` -gt 0 ]
+then
+    # Commit and review
+    git commit -F- <<EOF
+$COMMIT_MSG
+EOF
+    git review -t transifex/translations
+
+fi
diff --git a/modules/jenkins/files/slave_scripts/upstream_translation_update_manuals.sh b/modules/jenkins/files/slave_scripts/upstream_translation_update_manuals.sh
new file mode 100755
index 0000000000..58907c3e81
--- /dev/null
+++ b/modules/jenkins/files/slave_scripts/upstream_translation_update_manuals.sh
@@ -0,0 +1,61 @@
+#!/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.
+
+DocNameList="basic-install cli-guide common openstack-block-storage-admin \
+openstack-compute-admin openstack-ha openstack-install \
+openstack-network-connectivity-admin openstack-object-storage-admin \
+openstack-ops"
+
+if [ ! `echo $ZUUL_REFNAME | grep master` ]
+then
+    exit 0
+fi
+
+git config user.name "OpenStack Jenkins"
+git config user.email "jenkins@openstack.org"
+
+# no need to initialize transifex client,
+# because there is an existing .tx folder in openstack-manuals
+# tx init --host=https://www.transifex.com
+
+# generate pot one by one
+for DOCNAME in ${DocNameList}
+do
+    tx set --auto-local -r openstack-manuals-i18n.${DOCNAME} \
+"doc/src/docbkx/${DOCNAME}/locale/<lang>.po" --source-lang en \
+--source-file doc/src/docbkx/${DOCNAME}/locale/${DOCNAME}.pot \
+-t PO --execute
+    # openstack-ha needs to create new DocBook files
+    if [ "$DOCNAME" == "openstack-ha" ]
+    then
+        asciidoc -b docbook -d book -o - doc/src/docbkx/openstack-ha/ha-guide.txt \
+| xsltproc -o - /usr/share/xml/docbook/stylesheet/docbook5/db4-upgrade.xsl - \
+| xmllint  --format - | sed -e 's,<book,<book xml:id="bk-ha-guide",' \
+| sed -e 's,<info,<?rax pdf.url="../openstack-ha-guide-trunk.pdf"?><info,' \
+> doc/src/docbkx/openstack-ha/bk-ha-guide.xml
+    fi
+    # Update the .pot file
+    ./tools/generatepot ${DOCNAME}
+    # Add all changed files to git
+    git add doc/src/docbkx/${DOCNAME}/locale/*
+done
+
+if [ ! `git diff --cached --quiet HEAD --` ]
+then
+    # Push .pot changes to transifex
+    tx --debug --traceback push -s
+fi
+
+
+
diff --git a/modules/openstack_project/files/jenkins_job_builder/config/translation-jobs.yaml b/modules/openstack_project/files/jenkins_job_builder/config/translation-jobs.yaml
index 6086db797a..7855c65e0e 100644
--- a/modules/openstack_project/files/jenkins_job_builder/config/translation-jobs.yaml
+++ b/modules/openstack_project/files/jenkins_job_builder/config/translation-jobs.yaml
@@ -39,9 +39,50 @@
 
     node: 'tx'
 
+- job:
+    name: manuals-upstream-translation-update
+    concurrent: false
+
+    triggers:
+      - zuul-post
+
+    builders:
+      - gerrit-git-prep
+      - shell: |
+          #!/bin/bash -xe
+          /usr/local/jenkins/slave_scripts/upstream_translation_update_manuals.sh
+
+    publishers:
+      - console-log-post
+
+    node: 'tx'
+
+- job:
+    name: manuals-propose-translation-update
+    concurrent: false
+
+    triggers:
+      - timed: '@daily'
+
+    builders:
+      - shell: |
+          #!/bin/bash -xe
+          /usr/local/jenkins/slave_scripts/propose_translation_update_manuals.sh
+
+    publishers:
+      - console-log-periodic
+
+    scm:
+      - git:
+          url: 'git://github.com/{github-org}/openstack-manuals.git'
+          branches:
+            - 'origin/master'
+
+    node: 'tx'
 
 - job-group:
     name: translation-jobs
     jobs:
       - '{name}-upstream-translation-update'
       - '{name}-propose-translation-update'
+
diff --git a/modules/openstack_project/files/zuul/layout.yaml b/modules/openstack_project/files/zuul/layout.yaml
index 2c46d2182d..3c87b0793a 100644
--- a/modules/openstack_project/files/zuul/layout.yaml
+++ b/modules/openstack_project/files/zuul/layout.yaml
@@ -124,6 +124,8 @@ jobs:
     files:
       - '^tools/.*-requires$'
       - '^.*requirements.txt$'
+  - name: manuals-upstream-translation-update
+    branch: ^master$
 
 
 projects:
@@ -1259,6 +1261,7 @@ projects:
       - openstack-install-deploy-guide-apt-fedora
       - openstack-install-deploy-guide-ubuntu
       - openstack-operations-guide
+      - manuals-upstream-translation-update
 
   - name: openstack/api-site
     check: