name: CI

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build-and-test:
    name: Build & Test (${{ matrix.os }})
    runs-on: ${{ matrix.os }}
    continue-on-error: true
    strategy:
      matrix:
        os: [ windows-2022, ubuntu-20.04, macos-11 ]

    steps:
    - uses: actions/checkout@v3
      with:
        submodules: true
    - name: Add msbuild to PATH (Windows only)
      if: ${{ matrix.os == 'windows-2022' }}
      uses: microsoft/setup-msbuild@v1.1
      with:
        vs-version: '[17,18)'
        msbuild-architecture: x64
    - name: Install libssl (Mac Only)
      if: ${{ matrix.os == 'macos-11' }}
      run: brew install openssl@3
    - name: cmake
      uses: lukka/run-cmake@v10
      with:
        configurePreset: "ci-${{matrix.os}}"
        buildPreset: "ci-${{matrix.os}}"
        testPreset: "ci-${{matrix.os}}"
    - name: artifacts
      uses: actions/upload-artifact@v3
      if: ${{ github.ref == 'ref/head/main' }}
      with:
        name: build-${{matrix.os}}
        path: |
          build
          !build/tests
          !build/Testing
          !build/CMakeFiles
          !build/DartConfiguration.tcl
          !build/CTestTestfile.cmake
          !build/CMakeCache.txt
          !build/build.ninja
          !build/_deps
          !build/cmake_install.cmake
          !build/*.a
          !build/*.lib
          !build/*.dir
          !build/*.vcxproj
          !build/*.vcxproj.filters