[tor-commits] [bridgedb/master] Add script for automatically pulling in and compiling translation updates.

isis at torproject.org isis at torproject.org
Sun Jan 12 06:06:30 UTC 2014


commit 6d00ad5e94c8418df2eb4929b94f4c1b0d44bb04
Author: Isis Lovecruft <isis at torproject.org>
Date:   Fri Oct 11 04:04:09 2013 +0000

    Add script for automatically pulling in and compiling translation updates.
    
     * ADD maint/get-completed-translations script for pulling in the
       'bridgedb_completed' branch from the translations repo. At the end of the
       script there is the option to automatically run "python setup.py
       compile_catalog" to recompile the newly merged translations; this option
       times out after 15 seconds, so this is safe to run in an automated
       environment.
    
     * ADD "make translations" command to the Makefile, this will run the
       maint/get-completed-translations script.
---
 Makefile                         |    3 +
 maint/get-completed-translations |  163 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 166 insertions(+)

diff --git a/Makefile b/Makefile
index 0735f41..e0ff669 100644
--- a/Makefile
+++ b/Makefile
@@ -19,3 +19,6 @@ uninstall:
 	cat installed-files.txt | xargs rm -rf
 
 reinstall: uninstall force-install
+
+translations:
+	./maint/get-completed-translations
diff --git a/maint/get-completed-translations b/maint/get-completed-translations
new file mode 100755
index 0000000..ff352f1
--- /dev/null
+++ b/maint/get-completed-translations
@@ -0,0 +1,163 @@
+#!/bin/bash
+# -*- coding: utf-8 -*-
+#_____________________________________________________________________________
+# This file is part of BridgeDB, a Tor bridge distribution system.
+#
+# :authors: Isis Lovecruft 0xA3ADB67A2CDB8B35 <isis at torproject.org>
+#           please also see AUTHORS file
+# :copyright: (c) 2007-2013, The Tor Project, Inc.
+#             (c) 2007-2013, all entities within the AUTHORS file
+# :license: 3-clause BSD, see included LICENSE for information
+#_____________________________________________________________________________
+#
+# get-completed-translations
+# --------------------------
+# This should be used when newly completed translations are available in the
+# Tor Project's translations repository. [0]
+# 
+# The first time this script is run, it will create a directory, next to the
+# BridgeDB repository directory, named 'bridgedb-translations':
+#
+# …/parentdir/
+#   |-- bridgedb/
+#   |   |-- lib/
+#   |   |   `-- bridgedb/
+#   |   |       `-- i18n/
+#   |   |           |-- ar/
+#   |   |           |     `-- LC_MESSAGES
+#   |   |           |         |-- bridgedb.mo
+#   |   |           |         `-- bridgedb.po
+#   |   |           |-- …
+#   |   |           |-- zh_CN/
+#   |   |           |     `-- LC_MESSAGES
+#   |   |           |         |-- bridgedb.mo
+#   |   |           |         `-- bridgedb.po
+#   |   |           `-- templates/
+#   |   |-- scripts/
+#   |   `-- …
+#   `-- bridgedb-translations/
+#       |-- ar/
+#       |   `-- LC_MESSAGES
+#       |       `-- bridgedb.po
+#       |-- …
+#       `-- zh_CN/
+#           `-- LC_MESSAGES
+#               `-- bridgedb.po
+# 
+# The new directory, 'bridgedb-translations', will only contain the contents
+# of the upstream branch 'bridgedb_completed'. The updated .po files will be
+# rsync'd into the lib/bridgedb/i18n/ directory in the BridgeDB repository
+# directory.
+#
+# You shouldn't need to change anything in this script, nor run it from any
+# specific location. Just run it from anywhere and it'll update the
+# translations.
+#
+# [0]: https://gitweb.torproject.org/translation.git
+#_____________________________________________________________________________
+
+
+# The name of the directory to store completed translations for BridgeDB
+# in. This will be created, and made to fetch *only* the
+# $TRANS_COMPLETE_BRANCH branch from the TPO translations.git repo:
+TRANS_DIR='bridgedb-translations'
+
+# The remote location of the translations repo:
+TRANS_REMOTE='git at git-rw.torproject.org:translation.git'
+
+# The branch from the remote translations repo to check out:
+TRANS_COMPLETED_BRANCH='bridgedb_completed'
+
+
+#-----------------------------------------------------------------------------
+# Don't touch anything below here unless you're fixing a bug.
+#_____________________________________________________________________________
+
+# Check for dependencies:
+which rsync 2>&1 >/dev/null || \
+    { printf "You must have rsync installed.\nExiting.\n"; exit 1 ;}
+
+# Figure out where we are so that we can get to the parent directory of the
+# BridgeDB repository directory:
+THIS_FILE="${BASH_SOURCE[0]}"
+NAME=$(basename $0)
+
+while [ -h "$THIS_FILE" ]; do
+    # resolve $THIS_FILE until the file is no longer a symlink:
+    THIS_PATH="$( cd -P "$( dirname "$THIS_FILE" )" && pwd )"
+    THIS_FILE="$(readlink "$THIS_FILE")"
+    # if $THIS_FILE was a relative symlink, we need to resolve it relative to
+    # the path where the symlink file was located:
+    [[ $THIS_FILE != /* ]] && THIS_FILE="$THIS_PATH/$THIS_FILE" 
+done
+
+THIS_PATH="$( cd -P "$( dirname "$THIS_FILE" )" && pwd )"
+PARENT_PATH=${THIS_PATH%%/bridgedb/maint}
+
+function usage () {
+    printf "Usage: %s\n\n" $NAME
+    printf "That's it. Just run it from anywhere. There are no options.\n"
+    printf "\n"
+    printf "This should be used when newly completed translations are available in the\n"
+    printf "Tor Project's translations repository.\n"
+    printf "\n"
+    printf "The first time this script is run, it will create a directory, next to the\n"
+    printf "BridgeDB repository directory, named 'bridgedb-translations'.\n"
+    printf "The new directory, 'bridgedb-translations', will only contain the contents\n"
+    printf "of the upstream branch 'bridgedb_completed'. The updated .po files will be\n"
+    printf "rsync'd into the lib/bridgedb/i18n/ directory in the BridgeDB repository\n"
+    printf "directory.\n"
+    printf "\n"
+}
+
+if test "$#" -gt "1" ; then usage ; fi
+
+# Go to the parent directory of the BridgeDB repo:
+cd $PARENT_PATH
+#printf "%s: Current working directory:\n\t%s\n" $NAME $PWD
+# Create a directory for completed translations if it doesn't already exist:
+if ! test -d "$TRANS_DIR" ; then
+    printf "%s: Creating directory for translations repo:\n\t%s\n" \
+        $NAME $TRANS_DIR
+    mkdir $TRANS_DIR
+    # Go into the completed translations repo:
+    cd $TRANS_DIR
+    # Create the git repo if it doesn't exist:
+    git init
+    git remote add -t $TRANS_COMPLETED_BRANCH -f origin $TRANS_REMOTE
+    git checkout $TRANS_COMPLETED_BRANCH
+else
+    printf "%s: Found directory for translations repo:\n\t%s\n" \
+        $NAME $TRANS_DIR
+    # Go into the completed translations repo
+    cd $TRANS_DIR
+    git pull
+fi
+
+cd $PARENT_PATH
+rsync -PCAXrq \
+    --filter 'include ./translation/*/LC_MESSAGES/bridgedb.po' \
+    --filter 'exclude .gitignore' \
+    ./translation/ ./bridgedb/lib/bridgedb/i18n/
+status=$?
+
+printf "\n"
+read -N1 -t15 -p"Should we recompile the new translations now? (Y/n) " choice
+printf "\n"
+
+case $choice in
+    n ) 
+        printf "Skipping translations recompilation...\n\n"
+        status=$?
+        ;;
+    * )
+        printf "Recompiling files from *.po → *.mo ...\n\n"
+        cd ${PARENT_PATH}'/bridgedb'
+        python setup.py compile_catalog
+        status=$?
+        printf "\n"
+        printf "Don't forget to reinstall BridgeDB to update the templates!\n\n"
+        ;;
+esac
+
+exit $status





More information about the tor-commits mailing list