123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- #!/bin/sh
- #
- # Fetch the Transifex translations for Calamares and incorporate them
- # into the source tree, adding commits of the different files.
- ### 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
- 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
- ### CLEANUP TRANSLATIONS
- #
- # Some languages have been deprecated. They may still exist in Transifex,
- # so clean them up after pulling.
- #
- drop_language() {
- rm -rf lang/python/"$1" src/modules/dummypythonqt/lang/"$1" lang/calamares_"$1".ts
- grep -v "\\[$1]" calamares.desktop > calamares.desktop.new
- mv calamares.desktop.new calamares.desktop
- }
- drop_language es_ES
- drop_language pl_PL
- # Also fix the .desktop file, which has some fields removed by Transifex.
- #
- { cat calamares.desktop.in ; grep "\\[[a-zA-Z_@]*]=" calamares.desktop ; } > calamares.desktop.new
- mv calamares.desktop.new calamares.desktop
- ### 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 <groot@kde.org>'"
- # Message to put after the module name
- BOILERPLATE="Automatic merge of Transifex translations"
- git add --verbose lang/calamares*.ts
- git commit "$AUTHOR" --message="i18n: [calamares] $BOILERPLATE" | true
- rm -f lang/desktop*.desktop
- awk '
- BEGIN {skip=0;}
- /^# Translations/ {skip=1;}
- {if (!skip || (length($0)>1 && $0 != "# Translations")) {
- skip=0; print $0;
- }}' < calamares.desktop > calamares.desktop.new
- mv calamares.desktop.new calamares.desktop
- git add --verbose calamares.desktop
- git commit "$AUTHOR" --message="i18n: [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 --
- # 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
- sed -i'' '/^"Content-Type/s/CHARSET/UTF-8/' $POFILE
- msgfmt -o ${POFILE%.po}.mo $POFILE
- done
- git add --verbose ${MODULE_DIR}/lang/*
- git commit "$AUTHOR" --message="i18n: [${MODULE_NAME}] $BOILERPLATE" | true
- fi
- fi
- done
- for POFILE in $(find lang -name "python.po") ; do
- sed -i'' '/^"Content-Type/s/CHARSET/UTF-8/' $POFILE
- msgfmt -o ${POFILE%.po}.mo $POFILE
- done
- git add --verbose lang/python*
- git commit "$AUTHOR" --message="i18n: [python] $BOILERPLATE" | true
- # git push --set-upstream origin master
|