name: CodeQL

on:
  push:
    branches: ["main", "release/*"]
  pull_request:
    branches: ["main", "release/*"]
  schedule:
    - cron: '22 2 * * 6'

jobs:
  analyze:
    name: Analyze
    strategy:
      fail-fast: false

      matrix:
        os: [ubuntu-latest, windows-latest]

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

    timeout-minutes: 360

    permissions:
      actions: read
      contents: read
      security-events: write

    steps:
    - uses: actions/checkout@v3

    - name: Use GitHub Actions provided vcpkg
      shell: pwsh
      run: Add-Content "$env:GITHUB_ENV" "VCPKG_ROOT=$env:VCPKG_INSTALLATION_ROOT"

    - name: Initialize CodeQL
      uses: github/codeql-action/init@v3
      with:
        languages: cpp

    - name: Configure CMake
      shell: pwsh
      run: cmake "--preset=ci-$("${{matrix.os}}".split("-")[0])"
        -D CMAKE_BUILD_TYPE=Release

    - name: Build
      run: cmake --build build --config Release

    - name: Perform CodeQL Analysis
      uses: github/codeql-action/analyze@v3
      with:
        category: /language:cpp
