name: Tests
on:
  push:
    branches:
      - master
      - v*
  pull_request:
    branches:
      - master

jobs:
  pre-commit:
    name: Formatting
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - uses: actions/setup-python@v2
    - uses: pre-commit/action@v2.0.2

  cuda-build:
    name: CUDA build only
    runs-on: ubuntu-latest
    container: nvidia/cuda:10.2-devel-ubuntu18.04
    steps:
    - uses: actions/checkout@v1
      with:
        submodules: true
    - name: Add wget
      run: apt-get update && apt-get install -y wget
    - name: Setup cmake
      uses: jwlawson/actions-setup-cmake@v1.8
    - name: Configure
      run: cmake -S . -B build -DCLI11_CUDA_TESTS=ON
    - name: Build
      run: cmake --build build -j2

  cmake-config:
    name: CMake config check
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2

    - name: CMake 3.4
      uses: jwlawson/actions-setup-cmake@v1.8
      with:
        cmake-version: "3.4"
    - name: Check CMake 3.4
      uses: ./.github/actions/quick_cmake

    - name: CMake 3.5
      uses: jwlawson/actions-setup-cmake@v1.8
      with:
        cmake-version: "3.5"
    - name: Check CMake 3.5
      uses: ./.github/actions/quick_cmake
      if: success() || failure()

    - name: CMake 3.6
      uses: jwlawson/actions-setup-cmake@v1.8
      with:
        cmake-version: "3.6"
    - name: Check CMake 3.6
      uses: ./.github/actions/quick_cmake
      if: success() || failure()

    - name: CMake 3.7
      uses: jwlawson/actions-setup-cmake@v1.8
      with:
        cmake-version: "3.7"
    - name: Check CMake 3.7
      uses: ./.github/actions/quick_cmake
      if: success() || failure()

    - name: CMake 3.8
      uses: jwlawson/actions-setup-cmake@v1.8
      with:
        cmake-version: "3.8"
    - name: Check CMake 3.8
      uses: ./.github/actions/quick_cmake
      if: success() || failure()

    - name: CMake 3.9
      uses: jwlawson/actions-setup-cmake@v1.8
      with:
        cmake-version: "3.9"
    - name: Check CMake 3.9
      uses: ./.github/actions/quick_cmake
      if: success() || failure()

    - name: CMake 3.10
      uses: jwlawson/actions-setup-cmake@v1.8
      with:
        cmake-version: "3.10"
    - name: Check CMake 3.10
      uses: ./.github/actions/quick_cmake
      if: success() || failure()

    - name: CMake 3.11
      uses: jwlawson/actions-setup-cmake@v1.8
      with:
        cmake-version: "3.11"
    - name: Check CMake 3.11 (full)
      uses: ./.github/actions/quick_cmake
      with:
        args: -DCLI11_SANITIZERS=ON -DCLI11_BUILD_EXAMPLES_JSON=ON
      if: success() || failure()

    - name: CMake 3.12
      uses: jwlawson/actions-setup-cmake@v1.8
      with:
        cmake-version: "3.12"
    - name: Check CMake 3.12
      uses: ./.github/actions/quick_cmake
      if: success() || failure()

    - name: CMake 3.13
      uses: jwlawson/actions-setup-cmake@v1.8
      with:
        cmake-version: "3.13"
    - name: Check CMake 3.13
      uses: ./.github/actions/quick_cmake
      if: success() || failure()

    - name: CMake 3.14
      uses: jwlawson/actions-setup-cmake@v1.8
      with:
        cmake-version: "3.14"
    - name: Check CMake 3.14
      uses: ./.github/actions/quick_cmake
      if: success() || failure()

    - name: CMake 3.15
      uses: jwlawson/actions-setup-cmake@v1.8
      with:
        cmake-version: "3.15"
    - name: Check CMake 3.15
      uses: ./.github/actions/quick_cmake
      if: success() || failure()

    - name: CMake 3.16
      uses: jwlawson/actions-setup-cmake@v1.8
      with:
        cmake-version: "3.16"
    - name: Check CMake 3.16
      uses: ./.github/actions/quick_cmake
      if: success() || failure()

    - name: CMake 3.17
      uses: jwlawson/actions-setup-cmake@v1.8
      with:
        cmake-version: "3.17"
    - name: Check CMake 3.17
      uses: ./.github/actions/quick_cmake
      if: success() || failure()

    - name: CMake 3.18
      uses: jwlawson/actions-setup-cmake@v1.8
      with:
        cmake-version: "3.18"
    - name: Check CMake 3.18
      uses: ./.github/actions/quick_cmake
      if: success() || failure()

    - name: CMake 3.19
      uses: jwlawson/actions-setup-cmake@v1.8
      with:
        cmake-version: "3.19"
    - name: Check CMake 3.19 (full)
      uses: ./.github/actions/quick_cmake
      with:
        args: -DCLI11_SANITIZERS=ON -DCLI11_BUILD_EXAMPLES_JSON=ON
      if: success() || failure()

    - name: CMake 3.20
      uses: jwlawson/actions-setup-cmake@v1.8
      with:
        cmake-version: "3.20"
    - name: Check CMake 3.20
      uses: ./.github/actions/quick_cmake
      if: success() || failure()


