name: Automatic Translation

on: workflow_dispatch

jobs:
  translation:
    name: Translation Update
    runs-on: ubuntu-22.04
    timeout-minutes: 60

    steps:
      - name: Checkout
        uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0

      - name: Use Node.js 22.x
        uses: actions/setup-node@1a4442cacd436585916779262731d5b162bc6ec7 # v3.8.2
        with:
          node-version: 22.x
          registry-url: "https://registry.npmjs.org"

      - name: Use Python 3.13
        uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
        with:
          python-version: "3.13"

      - name: Install and Build
        shell: bash
        run: |
          npm ci
          npm run build
        env:
          NODE_OPTIONS: --max_old_space_size=4096
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # https://github.com/microsoft/vscode-ripgrep/issues/9

      - id: compute-next-version
        run: |
          export THEIA_CORE_VERSION=$(node -p "require(\"./packages/core/package.json\").version")
          echo "NEXT_VERSION_NUMBER=$(npx -q semver@7 --increment minor $THEIA_CORE_VERSION)" >> $GITHUB_ENV

      - name: Perform Automatic Translation
        run: |
          node ./scripts/translation-update.js
        env:
          DEEPL_API_TOKEN: ${{ secrets.DEEPL_API_TOKEN }}

      - name: Get Actor User Data
        uses: octokit/request-action@21d174fc38ff59af9cf4d7e07347d29df6dbaa99 # v2.3.0
        id: actor_user_data
        with:
          route: GET /users/{user}
          user: ${{ github.actor }}
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      - name: Create Pull Request
        uses: peter-evans/create-pull-request@6d6857d36972b65feb161a90e484f2984215f83e # v6.0.5
        with:
          commiter: ${{ github.actor }} <${{ fromJson(steps.actor_user_data.outputs.data).email }}>
          author: ${{ github.actor }} <${{ fromJson(steps.actor_user_data.outputs.data).email }}>
          branch: bot/translation-update
          title: Translation update for version ${{ env.NEXT_VERSION_NUMBER }}
          commit-message: Translation update for version ${{ env.NEXT_VERSION_NUMBER }}
          body: Automated translation update for Theia version ${{ env.NEXT_VERSION_NUMBER }}. Triggered by @${{ github.actor }}.
          labels: localization
