name: Build the package using cmake then documentation

on:
  workflow_dispatch:
  push:
  pull_request:
  release:
    types:
      - published
    
env:
  # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
  BUILD_TYPE: Debug

permissions:
  contents: read
  pages: write
  id-token: write

jobs:
  build:
    strategy:
      fail-fast: false
      matrix:
        platform: [ubuntu-latest, macos-latest] 
        python-version: ["3.12",]

    runs-on: ${{ matrix.platform }}

    defaults:
      run:
        shell: "bash -l {0}"

    steps:
      - uses: actions/checkout@v4

      - name: Get conda
        uses: conda-incubator/setup-miniconda@v3
        with:
          python-version: ${{ matrix.python-version }}
          environment-file: etc/dev-env.yml
          miniforge-version: latest
          channels: conda-forge
          conda-remove-defaults: "true"

      - name: Build library and docs
        run: |
            mkdir build 
            cd build 
            cmake .. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DAARE_SYSTEM_LIBRARIES=ON -DAARE_PYTHON_BINDINGS=ON -DAARE_DOCS=ON -DAARE_TESTS=ON
            make -j 4 
            make docs

      - name: C++ unit tests
        working-directory: ${{github.workspace}}/build
        run: ctest -C ${{env.BUILD_TYPE}} -j4


      - name: Python unit tests 
        working-directory: ${{github.workspace}}/build
        run: python -m pytest ${{github.workspace}}/python/tests/ 

      - name: Upload static files as artifact
        if: matrix.platform == 'ubuntu-latest'
        id: deployment
        uses: actions/upload-pages-artifact@v3 
        with:
         path: build/docs/html/
  deploy:
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    runs-on: ubuntu-latest
    needs: build
    if: (github.event_name == 'release' && github.event.action == 'published') || (github.event_name == 'workflow_dispatch' )
    steps:
      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v4




