From e1ba93a0c20316fed8ab7685a1088c265e9e6cc3 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 9 Aug 2017 07:14:42 +0900 Subject: [PATCH] i18n: document txpull, de-bash --- ci/txpull.sh | 61 +++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 46 insertions(+), 15 deletions(-) diff --git a/ci/txpull.sh b/ci/txpull.sh index ed22c278e..5c9ae8773 100755 --- a/ci/txpull.sh +++ b/ci/txpull.sh @@ -1,38 +1,69 @@ -#!/bin/bash +#!/bin/sh +# +# Fetch the Transifex translations for Calamares and incorporate them +# into the source tree, adding commits of the different files. -# Make sure we can make Transifex and git operations from the Calamares Docker+Jenkins environment. -cp ~/jenkins-master/.transifexrc ~ -cp ~/jenkins-master/.gitconfig ~ -cp -R ~/jenkins-master/.ssh ~ +### INITIAL SETUP +# +# This stuff needs to be done once; in a real CI environment where it +# runs regularly in a container, the setup needs to be done when +# creating the container. +# +# +# cp ~/jenkins-master/.transifexrc ~ # Transifex user settings +# cp ~/jenkins-master/.gitconfig ~ # Git config, user settings +# cp -R ~/jenkins-master/.ssh ~ # SSH, presumably for github +# +# cd "$WORKSPACE" +# git config --global http.sslVerify false -cd "$WORKSPACE" -git config --global http.sslVerify false +test -f "CMakeLists.txt" || { echo "! Not at Calamares top-level" ; exit 1 ; } +test -f ".tx/config" || { echo "! Not at Calamares top-level" ; exit 1 ; } +test -f "calamares.desktop" || { echo "! Not at Calamares top-level" ; exit 1 ; } +### FETCH TRANSLATIONS +# +# Use Transifex client to get translations; this depends on the +# .tx/config file to locate files, and overwrites them in the +# filesystem with new (merged) translations. export QT_SELECT=5 tx pull --force --source --all +### COMMIT TRANSLATIONS +# +# Produce multiple commits (for the various parts of the i18n +# infrastructure used by Calamares) of the updated translations. +# Try to be a little smart about not committing trivial changes. + +# Who is credited with these CI commits +AUTHOR="--author='Calamares CI '" +# Message to put after the module name +BOILERPLATE="Automatic merge of Transifex translations" + git add --verbose lang/calamares*.ts -git commit --author='Calamares CI ' --message='[core] Automatic merge of Transifex translations' | true +git commit "$AUTHOR" --message="[core] $BOILERPLATE" | true git add --verbose lang/desktop*.desktop calamares.desktop -git commit --author='Calamares CI ' --message='[desktop] Automatic merge of Transifex translations' | true +git commit "$AUTHOR" --message="[desktop] $BOILERPLATE" | true # Transifex updates the PO-Created timestamp also when nothing interesting # has happened, so drop the files which have just 1 line changed (the # PO-Created line). This applies only to modules which use po-files. git diff --numstat src/modules | awk '($1==1 && $2==1){print $3}' | xargs git checkout -- -for MODULE_DIR in `find src/modules -maxdepth 1 -mindepth 1 -type d`; do - FILES=(${MODULE_DIR}/*.py) - if [ ${#FILES[@]} -gt 0 ]; then +# Go through the Python modules; those with a lang/ subdir have their +# own complete gettext-based setup. +for MODULE_DIR in $(find src/modules -maxdepth 1 -mindepth 1 -type d) ; do + FILES=$(find "$MODULE_DIR" -name "*.py" -a -type f) + if test -n "$FILES" ; then MODULE_NAME=$(basename ${MODULE_DIR}) if [ -d ${MODULE_DIR}/lang ]; then # Convert PO files to MO files - for POFILE in `find ${MODULE_DIR} -name "*.po"` ; do - msgfmt -o ${POFILE/.po/.mo} $POFILE + for POFILE in $(find ${MODULE_DIR} -name "*.po") ; do + msgfmt -o ${POFILE%.po}.mo $POFILE done git add --verbose ${MODULE_DIR}/lang/* - git commit --author='Calamares CI ' --message="[${MODULE_NAME}] Automatic merge of Transifex translations" | true + git commit "$AUTHOR" --message="[${MODULE_NAME}] $BOILERPLATE" | true fi fi done