#!/bin/bash set -xe SOURCE_REPOSITORIES=( icingaweb2 icingaweb2-module-director icingaweb2-module-vspheredb icingadb-web icingaweb2-module-reporting icingaweb2-module-graphite icingaweb2-module-cube icingaweb2-module-idoreports icingaweb2-module-aws icingaweb2-module-businessprocess #icingaweb2-module-doc #icingaweb2-module-fileshipper #icingaweb2-module-jira #icingaweb2-module-nagvis icingaweb2-module-pdfexport #icingaweb2-module-pnp #icingaweb2-module-puppetdb #icingaweb2-module-test #icingaweb2-module-vsphere icingaweb2-module-x509 #icingaweb2-module-toplevelview icingaweb2-module-audit icingaweb2-module-elasticsearch #icingaweb2-module-eventdb #icingaweb2-module-generictts #icingaweb2-module-lynxtechnik ) # Fetch repositories which do not exist yet in the directory FETCHED_REPOS=(); for repo_name in "${SOURCE_REPOSITORIES[@]}"; do if [ ! -d "sources.d/$repo_name" ]; then FETCHED_REPOS+=( $repo_name ); wget -q -O - https://github.com/Icinga/$repo_name/archive/master.tar.gz | tar xz mv $repo_name-master/ sources.d/$repo_name fi done # Create a list of files xgettext should scan find -L sources.d -regex ".*\.\(php\|phtml\)" ! -path "*/vendor/*" ! -path "*/test/*" > catalog.txt xgettext --language=PHP \ --keyword=translate \ --keyword=translate:1,2c \ --keyword=translatePlural:1,2 \ --keyword=translatePlural:1,2,4c \ --keyword=mt:2 \ --keyword=mt:2,3c \ --keyword=mtp:2,3 \ --keyword=mtp:2,3,5c \ --keyword=t \ --keyword=t:1,2c \ --keyword=tp:1,2 \ --keyword=tp:1,2,4c \ --keyword=N_ \ --from-code=utf-8 \ --files-from=catalog.txt \ --sort-by-file \ --foreign-user \ --package-name=ipl-L10n \ --package-version=$(git describe --always) \ --msgid-bugs-address=https://github.com/Icinga/ipl-L10n/issues \ --default-domain=icinga \ --output=icinga.pot # Re-add the PoEdit header extensions REPLACE_CODE=$(cat << PYTHON import sys, re result = re.sub( r'msgid \"\"\nmsgstr \"\"(\n\".*\")+', '\g<0>\n' + '\"X-Poedit-Basepath: ../../../src\\\\\\\\n\"\n' + '\"X-Poedit-SearchPath-0: sources.d\\\\\\\\n\"', sys.stdin.read() ) sys.stdout.write(result) PYTHON ) cat icinga.pot | python -c "$REPLACE_CODE" > temp; mv temp icinga.pot # Cleanup created files and directories rm catalog.txt for repo_name in "${FETCHED_REPOS[@]}"; do rm -rf sources.d/$repo_name done # Check for changes (new messages) that need to be committed CHANGES=1 git diff -U0 \ | grep -Pe '^[+-]{1}[^+-]+' \ | grep -qv -e '."Project-Id-Version:' -e '."POT-Creation-Date:' \ || CHANGES=0 if [ $CHANGES -eq 0 ]; then echo "No new messages found."; git checkout icinga.pot; else # Update intermediate (in-progress) catalogs LOCALES=$(find . -mindepth 1 -maxdepth 1 -type d -regextype grep -regex '\./[a-z]\{2\}_[A-Z]\{2\}' -printf "%P ") for locale_name in $LOCALES; do msgmerge --update --backup=none --lang=$locale_name --sort-by-file $locale_name/LC_MESSAGES/icinga.po icinga.pot done echo "New messages found!"; # Working tree is left dirty as the following step creates a new pull request fi