---

name: Tests

on:
  push:
    branches:
      - '*.*'
  pull_request:
    branches:
      - '*.*'

jobs:
  checks:
    strategy:
      matrix:
        tool:
          - name: Orthographe
            package: pospell
            apt_dependencies: hunspell hunspell-fr-comprehensive
            command: 'pospell -p dict -l fr_FR $CHANGED_PO_FILES'
          - name: Longueur des lignes
            command: 'awk ''{if (length(gensub(/శ్రీనివాస్/, ".", "g", $0)) > 80 && length(gensub(/[^ ]/, "", "g")) > 1) {print FILENAME ":" FNR, "line too long:", $0; ERRORS+=1}} END {if (ERRORS>0) {exit 1}}'' $CHANGED_PO_FILES'
          - name: Grammaire
            package: padpo
            command: 'padpo -i $CHANGED_PO_FILES 2>&1 | grep -v -Ff padpo.ignore'

    name: ${{ matrix.tool.name }} (${{ matrix.tool.package }})
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Register problem matchers
        run: echo "::add-matcher::.github/problem-matchers/pospell.json"
      - uses: lots0logs/gh-action-get-changed-files@2.1.4
        id: changed_files
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
      - uses: actions/setup-python@v2
        with:
          python-version: '3.9'
      - name: Install ${{ matrix.tool.package }}
        run: |
          if [ -n "${{ matrix.tool.apt_dependencies }}" ]; then
              sudo apt-get update && sudo apt-get install -y ${{ matrix.tool.apt_dependencies }}
          fi
          if [ -n "${{ matrix.tool.package }}" ]; then
              python -m pip install --upgrade pip setuptools wheel
              python -m pip install ${{ matrix.tool.package }}
          fi
      - name: Run ${{ matrix.tool.package }}
        env:
          ADDED_FILES: ${{ join(fromJSON(steps.changed_files.outputs.added), ' ') }}
          MODIFIED_FILES: ${{ join(fromJSON(steps.changed_files.outputs.modified), ' ') }}
        run: |
          CHANGED_PO_FILES=$(printf "%s %s\n" "$ADDED_FILES" "$MODIFIED_FILES" | tr ' ' '\n' | grep '.po$'; true)
          if [ -n "$CHANGED_PO_FILES" ]
          then
            echo "Running on:" $CHANGED_PO_FILES
            ${{ matrix.tool.command }}
          else
            echo "No changed po files, nothing to check."
          fi

  sphinx:
    name: 'Génération de la doc (sphinx)'
    runs-on: ubuntu-latest
    timeout-minutes: 30
    steps:
      - uses: actions/checkout@v2
      - uses: actions/cache@v2
        with:
          path: '~/cpython/'
          key: '1'
      - uses: actions/setup-python@v2
        with:
          python-version: '3.9'
      - name: Clone cpython
        run: |
          if [ ! -d ~/cpython ]; then
            git clone https://github.com/python/cpython ~/cpython/
          else
            git -C ~/cpython fetch
          fi
      - name: Prepare build hierarchy
        run: |
          mkdir -p ~/locales/fr/LC_MESSAGES/
          cp -uv --parents *.po */*.po ~/locales/fr/LC_MESSAGES/
          git -C ~/cpython checkout $(grep ^CPYTHON_CURRENT_COMMIT Makefile| cut -d= -f2)
      - name: Prepare venv
        run: |
          # If the venv exists but is broken, drop it (happens on Python upgrades):
          # see https://github.com/actions/setup-python/issues/170
          [ -d $HOME/cpython/Doc/venv/bin/ -a ! -e $HOME/cpython/Doc/venv/bin/python ] && rm -fr $HOME/cpython/Doc/venv
          make -C $HOME/cpython/Doc venv
      - name: sphinx-build
        run: make -C $HOME/cpython/Doc SPHINXOPTS="-q -j4 -D locale_dirs=$HOME/locales -D language=fr -D gettext_compact=0" autobuild-dev-html
