From a8111dcafd3f68c1b41b10cb4b45c34a9116b60b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ladislav=20Slez=C3=A1k?= Date: Fri, 15 Dec 2023 16:06:38 +0100 Subject: [PATCH] Added GitHub Action for merging the Ruby translations --- .../workflows/weblate-merge-service-po.yml | 111 ++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 .github/workflows/weblate-merge-service-po.yml diff --git a/.github/workflows/weblate-merge-service-po.yml b/.github/workflows/weblate-merge-service-po.yml new file mode 100644 index 0000000000..ae6324a7bd --- /dev/null +++ b/.github/workflows/weblate-merge-service-po.yml @@ -0,0 +1,111 @@ +name: Weblate Merge Service PO + +on: + schedule: + # run every Monday at 2:45AM UTC + - cron: "45 2 * * 0" + + # allow running manually + workflow_dispatch: + +jobs: + merge-po: + # allow pushing and creating pull requests + permissions: + contents: write + pull-requests: write + + # do not run in forks + if: github.repository_owner == 'openSUSE' + + runs-on: ubuntu-latest + + container: + image: registry.opensuse.org/opensuse/tumbleweed:latest + volumes: + # bind mount the GitHub CLI tool from the Ubuntu host, + # it is a statically linked binary so it should work everywhere + - /usr/bin/gh:/usr/bin/gh + + steps: + - name: Configure and refresh repositories + run: | + # disable unused repositories to have a faster refresh + zypper modifyrepo -d repo-non-oss repo-openh264 repo-update && \ + zypper --non-interactive --gpg-auto-import-keys ref + + - name: Install tools + run: zypper --non-interactive install --no-recommends git gettext-tools + + - name: Configure Git + run: | + git config --global user.name "YaST Bot" + git config --global user.email "yast-devel@opensuse.org" + + - name: Checkout sources + uses: actions/checkout@v3 + with: + path: agama + + - name: Checkout Agama-weblate sources + uses: actions/checkout@v3 + with: + path: agama-weblate + repository: openSUSE/agama-weblate + + - name: Validate the service PO files + working-directory: ./agama-weblate + run: ls service/*.po | xargs -n1 msgfmt --check-format -o /dev/null + + - name: Update PO files + working-directory: ./agama + run: | + mkdir -p service/po + # delete the current translations + find service/po -name '*.po' -exec git rm '{}' ';' + + # copy the new ones + cp -a ../agama-weblate/service/*.po service/po + git add service/po/*.po + + # any changes besides the timestamps in the PO files? + - name: Check changes + id: check_changes + working-directory: ./agama + run: | + git diff --staged --ignore-matching-lines="POT-Creation-Date:" \ + --ignore-matching-lines="PO-Revision-Date:" service/po > po.diff + + if [ -s po.diff ]; then + echo "PO files updated" + # this is an Output Parameter + # https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#setting-an-output-parameter + echo "po_updated=true" >> $GITHUB_OUTPUT + else + echo "PO files unchanged" + echo "po_updated=false" >> $GITHUB_OUTPUT + fi + + rm po.diff + + - name: Push updated PO files + # run only when a PO file has been updated + if: steps.check_changes.outputs.po_updated == 'true' + working-directory: ./agama + run: | + # use a unique branch to avoid possible conflicts with already existing branches + git checkout -b "po_service_merge_${GITHUB_RUN_ID}" + git commit -a -m "Update service PO files"$'\n\n'"Agama-weblate commit: `git -C ../agama-weblate rev-parse HEAD`" + git push origin "po_service_merge_${GITHUB_RUN_ID}" + + - name: Create pull request + # run only when a PO file has been updated + if: steps.check_changes.outputs.po_updated == 'true' + working-directory: ./agama + run: | + gh pr create -B master -H "po_service_merge_${GITHUB_RUN_ID}" \ + --label translations --label bot \ + --title "Update service PO files" \ + --body "Updating the service translation files from the agama-weblate repository" + env: + GH_TOKEN: ${{ github.token }}