name: Python CI

on:
  push:
    branches: [master]
    paths:
      - 'foliatools/**'
      - 'test/**'
      - 'setup.py'
      - '.github/**'

  pull_request:
    branches: [master]

jobs:
  notification:
    runs-on: ubuntu-latest
    name: Notify start to ##gitlama
    steps:
      - name: IRC notification
        uses: Gottox/irc-message-action@v1
        with:
          server: irc.uvt.nl
          channel: '#gitlama'
          nickname: GH-foliatools
          message: |-
            ${{ github.actor }} started a build of foliatools

  build:
    runs-on: ubuntu-latest

    strategy:
        matrix:
            python-version: [ 3.7, 3.8, 3.9, "3.10",3.11]

    steps:
      - uses: actions/checkout@v2
        with:
            submodules: recursive

      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v2
        with:
          python-version: ${{ matrix.python-version }}

      - name: Install dependencies (1)
        run: |
          sudo apt-get install -y xmldiff

      - name: Install dependencies (2)
        run: |
          python -m pip install --upgrade pip
          if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
          python -m pip install conllu

      - name: Install self
        run: |
          python -m pip install .

      - name: Get Short Python Version
        id: pyversion
        uses: mad9000/actions-find-and-replace-string@2
        with:
            source: ${{ matrix.python-version }}
            find: '.'
            replace: ''

      - name: Build and test
        id: test
        run: |
            cd test
            ./test.sh
        continue-on-error: true


      - name: Notify IRC of failure
        if: ${{ steps.test.outcome != 'success' }}
        uses: Gottox/irc-message-action@v1
        with:
          server: irc.uvt.nl
          channel: '#gitlama'
          nickname: GH-foliatools-py${{ steps.pyversion.outputs.value }}
          message: |-
            Building and testing foliatools on Python ${{ matrix.python-version }}: FAILED

      - name: Notify IRC of success
        if: ${{ steps.test.outcome == 'success' }}
        uses: Gottox/irc-message-action@v1
        with:
          server: irc.uvt.nl
          channel: '#gitlama'
          nickname: GH-foliatools-py${{ steps.pyversion.outputs.value }}
          message: |-
            Building and testing foliatools on Python ${{ matrix.python-version }}: SUCCESS

      - name: Propagate test exit code
        if: ${{ steps.test.outcome != 'success' }}
        run: |
            exit 1
