name: Pull-Request-CI

on:
  pull_request:
    branches:
      - main
  push:
    branches:
      - main

jobs:
  Build-and-Test-LinuxOsX:
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
       os: [ubuntu-latest, macos-latest]
       python-version: ["3.8", "3.9", "3.10", "3.11"]
    defaults:
      run:
        shell: bash -l {0}
    steps:
      - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac
        with:
          submodules: recursive
      - uses: conda-incubator/setup-miniconda@2defc80cc6f4028b1780c50faf08dd505d698976
        with:
          miniconda-version: "latest"
          activate-environment: usgscsm
          environment-file: environment.yml
          auto-activate-base: false
          auto-update-conda: true
          python-version: ${{ matrix.python-version }}
      - name: Check build environment
        run: |
          conda list
      - name: Build Package
        run: |
          mkdir -p build
          cd build
          cmake -DCMAKE_BUILD_TYPE=RELEASE -DUSGSCSM_EXTERNAL_DEPS=OFF -DUSGSCSM_BUILD_DOCS=OFF ..
          cmake --build .
      - name: Test Package
        run: |
          cd build
          ctest -VV
  
  Build-and-Test-Win:
    runs-on: windows-2019
    strategy:
      matrix:
        python-version: ["3.8", "3.9", "3.10", "3.11"]
    steps:
      - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac
        with:
          submodules: recursive
          fetch-depth: 0
      - uses: conda-incubator/setup-miniconda@2defc80cc6f4028b1780c50faf08dd505d698976
        with:
          miniconda-version: "latest"
          activate-environment: usgscsm
          environment-file: environment.yml
          auto-activate-base: false
          auto-update-conda: true
          python-version: ${{ matrix.python-version }}
      - name: Check build environment
        run: |
          conda list
      - name: Build Package
        run: |
          mkdir -p build
          cd build
          cmake -G "Visual Studio 16 2019" -DUSGSCSM_BUILD_DOCS=OFF -DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=ON -DUSGSCSM_BUILD_DOCS=OFF -DUSGSCSM_BUILD_TESTS=OFF .. 
          cmake --build . --target ALL_BUILD --config Release
      - uses: actions/upload-artifact@c7d193f32edcb7bfad88892161225aeda64e9392
        with:
          name: usgscsm_py${{ matrix.python-version }}
          path: |
            D:\a\usgscsm\usgscsm\build\Release\usgscsm.dll
            D:\a\usgscsm\usgscsm\build\ale\Release\ale.dll
            D:\a\usgscsm\usgscsm\build\Release\usgscsm_cam_test.exe


  Build-Docs:
    runs-on: ubuntu-latest
    defaults:
      run:
        shell: bash -el {0}
    steps:
      - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac
        with:
          submodules: true
          fetch-depth: 0
      - uses: conda-incubator/setup-miniconda@2defc80cc6f4028b1780c50faf08dd505d698976
        with:
          miniconda-version: "latest"
          activate-environment: usgscsm
          environment-file: doc_environment.yml
          auto-activate-base: false
          auto-update-conda: true

      - name: Check doc build environment
        run: |
          conda list

      - name: Build Docs
        run: |
          cd docs
          doxygen Doxyfile.in
          sphinx-build -b html source public
