From 5e7482a7584b8fe22d892df82cba4978fe31aa83 Mon Sep 17 00:00:00 2001 From: Miroma Date: Sat, 28 Mar 2026 10:59:23 +0100 Subject: [PATCH] ci: add l10n workflows --- .github/workflows/{build.yml => build.yaml} | 22 +++--- .github/workflows/l10n-pull.yaml | 75 +++++++++++++++++++ .github/workflows/l10n-push.yaml | 39 ++++++++++ .../{manage_issues.yml => manage_issues.yaml} | 0 .../workflows/{release.yml => release.yaml} | 10 ++- crowdin.yaml | 6 ++ crowdin.yml | 11 --- 7 files changed, 139 insertions(+), 24 deletions(-) rename .github/workflows/{build.yml => build.yaml} (89%) create mode 100644 .github/workflows/l10n-pull.yaml create mode 100644 .github/workflows/l10n-push.yaml rename .github/workflows/{manage_issues.yml => manage_issues.yaml} (100%) rename .github/workflows/{release.yml => release.yaml} (88%) create mode 100644 crowdin.yaml delete mode 100644 crowdin.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yaml similarity index 89% rename from .github/workflows/build.yml rename to .github/workflows/build.yaml index db93dc068b5..5c0f6cbc45a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yaml @@ -1,13 +1,17 @@ name: Build -on: [push, pull_request] + +on: + push: + pull_request: + jobs: build: runs-on: ubuntu-24.04 steps: - uses: actions/setup-java@v5 with: - distribution: 'microsoft' - java-version: '25' + distribution: microsoft + java-version: 25 - uses: actions/checkout@v6 with: fetch-depth: 0 @@ -44,8 +48,8 @@ jobs: fetch-depth: 0 - uses: actions/setup-java@v5 with: - distribution: 'microsoft' - java-version: '25' + distribution: microsoft + java-version: 25 - run: | curl -L -o tracy-capture https://github.com/modmuss50/tracy-utils/releases/download/0.0.2/linux-x86_64-tracy-capture chmod +x tracy-capture @@ -72,8 +76,8 @@ jobs: fetch-depth: 0 - uses: actions/setup-java@v5 with: - distribution: 'microsoft' - java-version: '25' + distribution: microsoft + java-version: 25 - run: mkdir run && echo "eula=true" >> run/eula.txt - run: ./gradlew runAutoTestServer runGametest --stacktrace --warning-mode=fail @@ -85,7 +89,7 @@ jobs: fetch-depth: 0 - uses: actions/setup-java@v5 with: - distribution: 'microsoft' - java-version: '25' + distribution: microsoft + java-version: 25 - run: ./gradlew generateResources --stacktrace --warning-mode=fail - run: if [ -n "$(git status --porcelain)" ]; then exit 1; fi diff --git a/.github/workflows/l10n-pull.yaml b/.github/workflows/l10n-pull.yaml new file mode 100644 index 00000000000..3a45c516eba --- /dev/null +++ b/.github/workflows/l10n-pull.yaml @@ -0,0 +1,75 @@ +# This workflow is based on work originally published under the MIT License, and available here: +# +# The required copyright notice and the full text of the license, which apply to the original file, are reported below. + +# Copyright 2025 Rinth, Inc. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +name: Pull from Crowdin + +on: + schedule: + - cron: 37 7 * * SAT + workflow_dispatch: + +concurrency: + group: l10n-pull + +permissions: + contents: write + pull-requests: write + +jobs: + l10n-pull: + runs-on: ubuntu-24.04 + steps: + - if: startsWith(github.ref_name, 'l10n/') + run: | + echo "::error title=Wrong Branch::This workflow must not be triggered from the l10n/* branch" + exit 1 + - uses: actions/checkout@v4 + - uses: crowdin/github-action@60debf382ee245b21794321190ad0501db89d8c1 + with: + token: ${{ secrets.CROWDIN_TOKEN }} + crowdin_branch_name: ${{ github.event.repository.name }}/${{ github.ref_name }} + upload_sources: false + upload_translations: false + download_sources: false + download_translations: true + create_pull_request: false + push_translations: false + - run: sudo chown -R "${USER}:${USER}" . + - run: git fetch --depth=1 origin "l10n/${{ github.ref_name }}" || true + - id: message + run: | + prefix="l10n: $(date +%y)w$(date +%V)" + + old_message="$(git show --no-patch --pretty=format:%s "origin/l10n/${{ github.ref_name }}" || true)" + regex="^${prefix}([a-z]+)" + if [[ "${old_message}" =~ ${regex} ]]; then + old_suffix="${BASH_REMATCH[1]}" + if [[ "${old_suffix}" =~ z$ ]]; then + suffix="${old_suffix%?}oa" + else + last_char="$(tr "a-y" "b-z" <<<"${old_suffix: -1}")" + suffix="${old_suffix%?}${last_char}" + fi + else + suffix="a" + fi + + echo message="${prefix}${suffix}" >>"${GITHUB_OUTPUT}" + - uses: peter-evans/create-pull-request@98357b18bf14b5342f975ff684046ec3b2a07725 + with: + title: ${{ steps.message.outputs.message }} + body: "" + commit-message: ${{ steps.message.outputs.message }} + author: Fabric Bot <159731069+FabricMCBot@users.noreply.github.com> + branch: l10n/${{ github.ref_name }} + draft: always-true + maintainer-can-modify: false diff --git a/.github/workflows/l10n-push.yaml b/.github/workflows/l10n-push.yaml new file mode 100644 index 00000000000..18b54fca7e3 --- /dev/null +++ b/.github/workflows/l10n-push.yaml @@ -0,0 +1,39 @@ +# This workflow is based on work originally published under the MIT License, and available here: +# +# The required copyright notice and the full text of the license, which apply to the original file, are reported below. + +# Copyright 2025 Rinth, Inc. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +name: Push to Crowdin + +on: + push: + branches: [main] + paths: + - ".github/workflows/l10n-push.yaml" + - "crowdin.yaml" + - "*/src/*/resources/assets/*/lang/en_us.properties" + workflow_dispatch: + +concurrency: + group: l10n-push + +jobs: + l10n-push: + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@v4 + - uses: crowdin/github-action@60debf382ee245b21794321190ad0501db89d8c1 + with: + token: ${{ secrets.CROWDIN_TOKEN }} + crowdin_branch_name: ${{ github.event.repository.name }}/${{ github.ref_name }} + upload_sources: true + upload_translations: false + download_sources: false + download_translations: false diff --git a/.github/workflows/manage_issues.yml b/.github/workflows/manage_issues.yaml similarity index 100% rename from .github/workflows/manage_issues.yml rename to .github/workflows/manage_issues.yaml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yaml similarity index 88% rename from .github/workflows/release.yml rename to .github/workflows/release.yaml index f7219ce3396..f7a3c59d0be 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yaml @@ -1,5 +1,7 @@ name: Release -on: [workflow_dispatch] # Manual trigger + +on: + workflow_dispatch: permissions: contents: write @@ -10,8 +12,8 @@ jobs: steps: - uses: actions/setup-java@v5 with: - distribution: 'microsoft' - java-version: '25' + distribution: microsoft + java-version: 25 - uses: actions/checkout@v6 with: fetch-depth: 0 @@ -19,7 +21,7 @@ jobs: id: changelog with: context: changelog - workflow_id: release.yml + workflow_id: release.yaml - uses: gradle/actions/wrapper-validation@v4 - run: ./gradlew checkVersion build publish publishMods -x check --stacktrace --no-configuration-cache env: diff --git a/crowdin.yaml b/crowdin.yaml new file mode 100644 index 00000000000..96028e30dcf --- /dev/null +++ b/crowdin.yaml @@ -0,0 +1,6 @@ +files: + - source: /*/src/*/resources/assets/*/lang/en_us.json + translation: /*/src/*/resources/assets/*/lang/%locale_with_underscore%.json + ignore: /*/src/test* +preserve_hierarchy: true +project_id: "647524" diff --git a/crowdin.yml b/crowdin.yml deleted file mode 100644 index 24dbf07d093..00000000000 --- a/crowdin.yml +++ /dev/null @@ -1,11 +0,0 @@ -files: - - source: fabric-resource-loader-v1/src/main/resources/assets/fabric-resource-loader-v1/lang/en_us.json - translation: /fabric-resource-loader-v1/src/main/resources/assets/fabric-resource-loader-v1/lang/%locale_with_underscore%.json - - source: fabric-creative-tab-api-v1/src/main/resources/assets/fabric/lang/en_us.json - translation: /fabric-creative-tab-api-v1/src/main/resources/assets/fabric/lang/%locale_with_underscore%.json - - source: fabric-registry-sync-v0/src/main/resources/assets/fabric-registry-sync-v0/lang/en_us.json - translation: /fabric-registry-sync-v0/src/main/resources/assets/fabric-registry-sync-v0/lang/%locale_with_underscore%.json - - source: fabric-convention-tags-v2/src/generated/resources/assets/fabric-convention-tags-v2/lang/en_us.json - translation: /fabric-convention-tags-v2/src/main/resources/assets/fabric-convention-tags-v2/lang/%locale_with_underscore%.json - - source: fabric-data-attachment-api-v1/src/main/resources/assets/fabric-data-attachment-api-v1/lang/en_us.json - translation: /fabric-data-attachment-api-v1/src/main/resources/assets/fabric-data-attachment-api-v1/lang/%locale_with_underscore%.json