name: Update Translations

on:
  pull_request:
    paths:
      - '.tx/**'
      - '.github/workflows/translations-pull.yml'
  schedule:
    # Runs in the middle of each month starting a quarter (UTC) = two weeks after new strings are built
    - cron: '0 0 15 1,4,7,10 *'
  workflow_dispatch:

jobs:
  translations:
    # Do not run the scheduled workflow on forks
    if: github.event_name != 'schedule' || github.repository_owner == 'Cockatrice'

    name: Pull languages
    runs-on: ubuntu-slim

    steps:
      - name: "Checkout repo"
        uses: actions/checkout@v7

      - name: "Pull translated strings from Transifex"
        # Do not run this step for PR's from forks, they don't have access to the secret
        if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false
        uses: transifex/cli-action@v2
        with:
          # Used config file: https://github.com/Cockatrice/Cockatrice/blob/master/.tx/config
          # Docs: https://github.com/transifex/cli#pulling-files-from-transifex
          args: pull --force --all
          token: ${{ secrets.TX_TOKEN }}

      - name: "Create pull request"
        if: github.event_name != 'pull_request'
        id: create_pr
        uses: peter-evans/create-pull-request@v8
        with:
          add-paths: |
            cockatrice/translations/*.ts
            oracle/translations/*.ts
          author: github-actions <github-actions@github.com>    # owner of the commit
          body: |
            Pulled all translated strings from [Transifex][1].

            ---
            *This PR is automatically generated and updated by the workflow at `.github/workflows/translations-pull.yml`. Review [action runs][2].*<br>
            *After merging, all new languages and translations are available in the next build.*

            [1]: https://explore.transifex.com/cockatrice/cockatrice/
            [2]: https://github.com/Cockatrice/Cockatrice/actions/workflows/translations-pull.yml?query=branch%3Amaster
          branch: ci-update_translations
          commit-message: Update translation files
          delete-branch: true
          draft: false
          labels: |
            CI
            Translation
          title: 'Update translations'

      - name: "PR Status"
        if: github.event_name != 'pull_request'
        shell: bash
        env:
          PR_NUMBER: ${{ steps.create_pr.outputs.pull-request-number }}
          PR_URL: ${{ steps.create_pr.outputs.pull-request-url }}
          STATUS: ${{ case(steps.create_pr.outputs.pull-request-operation == 'none', 'unchanged', steps.create_pr.outputs.pull-request-operation) }}
        run: |
          echo "PR #$PR_NUMBER $STATUS!" >> "$GITHUB_STEP_SUMMARY"
          echo "URL: $PR_URL" >> "$GITHUB_STEP_SUMMARY"
