Weblate Update POT #312
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Weblate Update POT | |
on: | |
schedule: | |
# run every working day (Monday-Friday) at 1:42AM UTC | |
- cron: "42 1 * * 0-4" | |
# allow running manually | |
workflow_dispatch: | |
jobs: | |
update-pot: | |
# do not run in forks | |
if: github.repository == 'openSUSE/agama' | |
runs-on: ubuntu-latest | |
container: | |
image: registry.opensuse.org/opensuse/tumbleweed:latest | |
steps: | |
- name: Configure and refresh repositories | |
# disable unused repositories to have a faster refresh | |
run: zypper modifyrepo -d repo-non-oss repo-openh264 repo-update && zypper ref | |
- name: Install Default Ruby | |
run: zypper --non-interactive install --no-recommends ruby | |
- name: Install tools | |
run: | | |
RUBY_VERSION=$(ruby -e "puts RbConfig::CONFIG['ruby_version']") | |
zypper --non-interactive install --no-recommends diffutils git gettext-tools npm-default "rubygem(ruby:$RUBY_VERSION:yast-rake)" "rubygem(ruby:$RUBY_VERSION:gettext)" yast2-devtools which | |
- name: Checkout Agama sources | |
uses: actions/checkout@v4 | |
with: | |
path: agama | |
- name: Generate web POT file | |
run: | | |
cd agama/web | |
./build_pot | |
msgfmt --statistics agama.pot | |
- name: Validate the generated web POT file | |
run: msgfmt --check-format agama/web/agama.pot | |
- name: Checkout Weblate sources | |
uses: actions/checkout@v4 | |
with: | |
path: agama-weblate | |
repository: openSUSE/agama-weblate | |
token: ${{ secrets.GH_TOKEN }} | |
- name: Configure Git | |
run: | | |
git config --global user.name "YaST Bot" | |
git config --global user.email "[email protected]" | |
- name: Update web POT file | |
run: | | |
mkdir -p agama-weblate/web | |
cp agama/web/agama.pot agama-weblate/web/agama.pot | |
# any change besides the timestamp in the POT file? | |
- name: Check web POT changes | |
id: check_changes | |
run: | | |
git -C agama-weblate diff --ignore-matching-lines="POT-Creation-Date:" web/agama.pot > pot.diff | |
if [ -s pot.diff ]; then | |
echo "POT file updated" | |
echo "pot_updated=true" >> $GITHUB_OUTPUT | |
else | |
echo "POT file unchanged" | |
echo "pot_updated=false" >> $GITHUB_OUTPUT | |
# reset any possible changes so they are not accidentally committed later | |
git -C agama-weblate reset --hard | |
fi | |
- name: Push updated web POT file | |
# run only when the POT file has been updated | |
if: steps.check_changes.outputs.pot_updated == 'true' | |
run: | | |
cd agama-weblate | |
git add web/agama.pot | |
git commit -m "Update web POT file"$'\n\n'"Agama commit: $GITHUB_SHA" | |
git push | |
- name: Merge new POT to web translations | |
# run only when the POT file has been updated | |
if: steps.check_changes.outputs.pot_updated == 'true' | |
run: | | |
cd agama-weblate/web | |
find . -name "*.po" -exec msgmerge -U "{}" agama.pot \; | |
git commit -a -m "Merge new POT file to web translations"$'\n\n'"Agama commit: $GITHUB_SHA" | |
git push | |
- name: Install NPM packages | |
run: | | |
cd agama/.github/workflows/product_translations | |
npm ci | |
- name: Generate products POT file | |
run: | | |
cd agama/products.d | |
../.github/workflows/product_translations/products_pot *.yaml > products.pot | |
msgfmt --statistics products.pot | |
- name: Validate the generated products POT file | |
run: msgfmt --check-format agama/products.d/products.pot | |
- name: Update products POT file | |
run: | | |
mkdir -p agama-weblate/products | |
cp agama/products.d/products.pot agama-weblate/products/products.pot | |
# any change besides the timestamp in the POT file? | |
- name: Check products POT changes | |
id: check_changes_products | |
run: | | |
git -C agama-weblate diff --ignore-matching-lines="POT-Creation-Date:" products/products.pot > pot.diff | |
if [ -s pot.diff ]; then | |
echo "POT file updated" | |
echo "pot_updated=true" >> $GITHUB_OUTPUT | |
else | |
echo "POT file unchanged" | |
echo "pot_updated=false" >> $GITHUB_OUTPUT | |
fi | |
- name: Push updated products POT file | |
# run only when the POT file has been updated | |
if: steps.check_changes_products.outputs.pot_updated == 'true' | |
run: | | |
cd agama-weblate | |
git add products/products.pot | |
git commit -m "Update products POT file"$'\n\n'"Agama commit: $GITHUB_SHA" | |
git push | |
- name: Merge new POT to product translations | |
# run only when the POT file has been updated | |
if: steps.check_changes_products.outputs.pot_updated == 'true' | |
run: | | |
cd agama-weblate/products | |
find . -name "*.po" -exec msgmerge -U '{}' products.pot \; | |
git commit -a -m "Merge new POT file to product translations"$'\n\n'"Agama commit: $GITHUB_SHA" | |
git push | |
- name: Generate service POT file | |
run: | | |
cd agama | |
rake pot | |
msgfmt --statistics agama.pot | |
- name: Validate the generated service POT file | |
run: msgfmt --check-format agama/agama.pot | |
- name: Update service POT file | |
run: | | |
mkdir -p agama-weblate/service | |
cp agama/agama.pot agama-weblate/service/agama.pot | |
# any change besides the timestamp in the POT file? | |
- name: Check service POT changes | |
id: check_service_changes | |
run: | | |
git -C agama-weblate diff --ignore-matching-lines="POT-Creation-Date:" service/agama.pot > pot.diff | |
if [ -s pot.diff ]; then | |
echo "POT file updated" | |
echo "pot_updated=true" >> $GITHUB_OUTPUT | |
else | |
echo "POT file unchanged" | |
echo "pot_updated=false" >> $GITHUB_OUTPUT | |
# reset any possible changes so they are not accidentally committed later | |
git -C agama-weblate reset --hard | |
fi | |
- name: Push updated service POT file | |
# run only when the POT file has been updated | |
if: steps.check_service_changes.outputs.pot_updated == 'true' | |
run: | | |
cd agama-weblate | |
git add service/agama.pot | |
git commit -m "Update service POT file"$'\n\n'"Agama commit: $GITHUB_SHA" | |
git push | |
- name: Merge service POT to service translations | |
# run only when the POT file has been updated | |
if: steps.check_service_changes.outputs.pot_updated == 'true' | |
run: | | |
cd agama-weblate/service | |
find . -name "*.po" -exec msgmerge -U "{}" agama.pot \; | |
git commit -a -m "Merge new POT file to service translations"$'\n\n'"Agama commit: $GITHUB_SHA" | |
git push |