name: Python CI

on:
  push:
    branches: [master]
    paths:
      - 'clam/**'
      - '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@v2
        with:
          server: irc.uvt.nl
          channel: '#gitlama'
          nickname: GH-clam
          message: |-
            ${{ github.actor }} started a build of CLAM

  build:
    runs-on: ubuntu-latest

    strategy:
        matrix:
            python-version:  [3.9, "3.10" ,3.11, 3.12, 3.13]

    steps:
      - uses: actions/checkout@v4
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.python-version }}
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
          python -m pip install folia

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

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

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


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

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

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