name: Translations

on:
  schedule:
    # Implicitly runs on default branch
    # every two days at 6:00 UTC
    - cron: '0 6 */2 * *'

jobs:

  # This job will run ./setup.py extract_messages on top of git master
  # and force push that to the 'translations' branch. That branch will
  # always have an up to date .pot file for use in weblate
  update-translation-pot:
    # Only run this if on the main 'virt-manager/virt-manager' repo, not forks
    if: "contains(github.repository, 'virt-manager/virt-manager')"

    runs-on: ubuntu-latest
    container:
      image: fedora:latest

    steps:
    - name: Install deps
      run: |
        dnf install -y python3-setuptools gettext git diffutils

    - uses: actions/checkout@v2
      with:
        # This fetches full git history. We need that for proper
        # branch updating
        fetch-depth: 0

    - name: Extract messages and push to translations branch
      run: |
        git config --global user.email "actions@github.com"
        git config --global user.name "Github Actions"

        git fetch --all
        git rebase remotes/origin/translations

        cp po/virt-manager.pot old.pot
        ./setup.py extract_messages
        ec=0
        diff -q -I 'POT-Creation-Date' old.pot po/virt-manager.pot || ec=$?
        case "${ec}" in
          0) ;;
          1)
            git commit po/virt-manager.pot \
              --message "Refresh translation .pot template"

            remote_repo="https://${GITHUB_ACTOR}:${{ secrets.GITHUB_TOKEN }}@github.com/${GITHUB_REPOSITORY}.git"
            git push "${remote_repo}" HEAD:translations
            ;;
          *)
            echo "diff failed with exit status ${ec}" >&2
            exit 1
            ;;
        esac
