name: CI

on:
  pull_request:
  push:
    branches:
      - master
      - devel

jobs:

  # take out unit tests
  test:
    name: Unit tests (Python ${{ matrix.python-version }})
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version:
        - "3.11"
    env:
      QUAPY_TESTS_OMIT_LARGE_DATASETS: True
    steps:
    - uses: actions/checkout@v3
    - 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 setuptools wheel
        python -m pip install -e .[bayes,composable,tests]
    - name: Test with unittest
      run: python -m unittest

  # build and push documentation to gh-pages (only if pushed to the master branch)
  docs:
    name: Documentation
    runs-on: ubuntu-latest
    if: github.ref == 'refs/heads/master'
    steps:
    - uses: actions/checkout@v1
    - name: Build documentation
      uses: ammaraskar/sphinx-action@master
      with:
        pre-build-command: |
          apt-get --allow-releaseinfo-change update -y && apt-get install -y git && git --version
          python -m pip install --upgrade pip setuptools wheel "jax[cpu]"
          python -m pip install -e .[composable,neural,docs]
        docs-folder: "docs/"
    - name: Publish documentation
      run: |
        git clone ${{ github.server_url }}/${{ github.repository }}.git --branch gh-pages --single-branch __gh-pages/
        cp -r docs/build/html/* __gh-pages/
        cd __gh-pages/
        git config --local user.email "action@github.com"
        git config --local user.name "GitHub Action"
        git add .
        git commit -am "Documentation based on ${{ github.sha }}" || true
    - name: Push changes
      uses: ad-m/github-push-action@master
      with:
        branch: gh-pages
        directory: __gh-pages/
        github_token: ${{ secrets.GITHUB_TOKEN }}