name: Translations
on:
  schedule:
    - cron: '0 0 * * *'
jobs:
  crowdin:
    runs-on: ubuntu-20.04
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
          ref: main
          token: ${{secrets.INKSTITCH_BUILDS_GITHUB_TOKEN}}
      - name: checkout submodules
        run: |
          git submodule update --init --recursive
      - uses: actions/setup-python@v5
        with:
          python-version: '3.8.x'
      - env:
          CROWDIN_API_KEY: ${{ secrets.CROWDIN_API_V2_KEY }}
          CROWDIN_PROJECT_ID: "299419"
        run: |
          git config --global user.email "inkstitch-crowdin@lex.gd"
          git config --global user.name "Ink/Stitch Crowdin integration"

          wget --quiet https://downloads.crowdin.com/cli/v3/crowdin-cli.zip
          unzip -j crowdin-cli.zip

          sudo apt-get update
          sudo apt install gettext
          # for wxPython
          sudo apt install glib-networking libsdl2-dev libsdl2-2.0-0
          # for PyGObject
          sudo apt install libgirepository1.0-dev libcairo2-dev
          # for shapely
          sudo apt install libgeos-dev build-essential libgtk-3-dev

          python -m pip install --upgrade pip
          python -m pip install wheel
          python -m pip install pycairo
          python -m pip install PyGObject

          python -m pip install https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-20.04/wxPython-4.1.1-cp38-cp38-linux_x86_64.whl

          python -m pip install -r requirements.txt
          python -m pip install Babel

          make messages.po
          echo "uploading messages.po to crowdin"
          java -jar crowdin-cli.jar -v upload -b main -T "$CROWDIN_API_KEY" -i "$CROWDIN_PROJECT_ID"

          echo "downloading new translations"
          java -jar crowdin-cli.jar -v pull -b main -T "$CROWDIN_API_KEY" -i "$CROWDIN_PROJECT_ID"

          # Try to only commit if translations changed.  Crowdin will update all
          # files when a new translation string is added but we don't need to
          # commit those until folks actually translate the new strings.
          if git diff translations | grep -qE '^[-+]msgstr ".+"$'; then
            make electron/src/renderer/assets/translations.json
            git add translations electron/src/renderer/assets/translations.json
            git commit -m "new translations from Crowdin"
            git push https://github.com/inkstitch/inkstitch main
          fi
