name: win-msys2-clang-ci

on:
  workflow_dispatch:

  push:
    branches:
      - master
      - feature/**
      - improvement/**
      - bugfix/**

  pull_request:
    branches:
      - master
      - feature/**
      - improvement/**
      - bugfix/**

jobs:
  windows-mingw:
    if: >-
      ! contains(toJSON(github.event.commits.*.message), '[skip ci]') &&
      ! contains(toJSON(github.event.commits.*.message), '[skip github]')

    defaults:
      run:
        shell: msys2 {0}

    strategy:
      fail-fast: false

      matrix:
        os: [windows-2019, windows-latest]
        type: [Release, Debug]
        config:
          - msystem: "MINGW64"
            install: >-
              git mingw-w64-x86_64-cmake mingw-w64-x86_64-ninja
              mingw-w64-x86_64-clang

          - msystem: "MINGW32"
            install: >-
              git mingw-w64-i686-cmake mingw-w64-i686-ninja
              mingw-w64-i686-clang

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

    name: "${{matrix.config.msystem}}: ${{matrix.os}}: ${{matrix.type}}"

    env:
      CMAKE_GENERATOR: Ninja

    steps:
      - uses: actions/checkout@v2

      - uses: msys2/setup-msys2@v2
        with:
          update: true
          msystem: ${{matrix.config.msystem}}
          install: ${{matrix.config.install}}

      - name: Install dependencies
        run: script/ci_install_deps.sh

      - name: Configure
        run: >-
          cmake -DCMAKE_CXX_COMPILER=clang++ -S test -B build
          -DCMAKE_BUILD_TYPE=${{matrix.type}}

      - name: Build
        run: cmake --build build -j ${{steps.cores.outputs.count}}

      - name: Run
        working-directory: build
        run: ctest --output-on-failure