name: ASF-translations

on:
  schedule:
  - cron: '55 1 * * *'
  workflow_dispatch:

permissions:
  contents: write

jobs:
  update:
    environment: dev-crowdin
    runs-on: ubuntu-latest

    steps:
    - name: Checkout code
      uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
      with:
        show-progress: false
        submodules: recursive
        token: ${{ secrets.ARCHIBOT_GITHUB_TOKEN }}

    - name: Reset wiki to follow origin
      shell: sh
      working-directory: wiki
      run: |
        set -eu

        git fetch origin master
        git reset --hard origin/master

    - name: Download latest translations from Crowdin
      uses: crowdin/github-action@b4b468cffefb50bdd99dd83e5d2eaeb63c880380 # v2.14.0
      with:
        upload_sources: false
        download_translations: true
        skip_untranslated_strings: true
        push_translations: false
        crowdin_branch_name: main
        config: '.github/crowdin.yml'
        project_id: ${{ secrets.ASF_CROWDIN_PROJECT_ID }}
        token: ${{ secrets.ASF_CROWDIN_API_TOKEN }}

    - name: Import GPG key for signing
      uses: crazy-max/ghaction-import-gpg@e89d40939c28e39f97cf32126055eeae86ba74ec # v6.3.0
      with:
        gpg_private_key: ${{ secrets.ARCHIBOT_GPG_PRIVATE_KEY }}
        git_config_global: true
        git_user_signingkey: true
        git_commit_gpgsign: true

    - name: Commit and push the changes to wiki
      shell: sh
      working-directory: wiki
      run: |
        set -eu

        git add -A "locale"

        if ! git diff --cached --quiet; then
            git commit -m "Automatic translations update"

            git push origin HEAD:master
        fi

    - name: Commit and push the changes to ASF
      shell: sh
      run: |
        set -eu

        git add -A "ArchiSteamFarm/Localization" "ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Localization" "ArchiSteamFarm.OfficialPlugins.MobileAuthenticator/Localization" "ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/Localization" "wiki"

        if ! git diff --cached --quiet; then
            git commit -m "Automatic translations update"

            git push
        fi
