name: Transifex
on: [pull_request]

jobs:
  messages:
    name: Check messages.po changes
    runs-on: ubuntu-latest
    steps:
      - name: Install gettext
        run: sudo apt-get install gettext

      - name: Checkout Friendica Base
        uses: actions/checkout@v2
        with:
          repository: 'friendica/friendica'
          ref: ${{ github.base_ref }}

      - name: Checkout current Friendica Addons
        uses: actions/checkout@v2
        with:
          path: 'addon'

      - name: Get changed files
        id: changes
        uses: jitterbit/get-changed-files@v1

      - name: Run Xgettext for each changed addon
        run: |
          addon_files=(${{ steps.changes.outputs.all }})
          find_result=$(printf "%s\n" "${addon_files[@]}" | sed '/^\./d' | cut -d "/" -f1 | uniq)
          for addon in $find_result
          do
            ./bin/run_xgettext.sh --addon $addon
          done

      - name: Check if messages.po needs an update
        run: |
          echo "::group::Check messages.po"
          # Skip all lines of the git diff starting with "@@" or comments or starting "POT-Creation-Date"
          cd addon/
          if [[ $(git diff -U0 "**/messages.po" | awk '!/index|diff|\-\-\-|\+\+\+|@@|\-"POT-Creation-Date|\+"POT-Creation-Date|\+#|\-#/{print }' | wc -l) > 0 ]]; then
            echo "::error file=messages.po::messages.po is out of date"
            exit 1
          else
            echo "Nothing to update"
          fi
          echo "::endgroup::"
        shell: bash