name: cpp-linter

on:
  pull_request:
  merge_group:
  push:
    branches:
      - main
  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
  cancel-in-progress: true

jobs:
  cpp-linter:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          submodules: recursive
      - name: Install OpenCV
        run: sudo apt install libopencv-dev
      - name: Generate compilation database
        run: CC=clang-14 CXX=clang++-14 cmake -S . -B build -DBINDINGS=ON -DBUILD_DDSIM_TESTS=ON
      - name: Run cpp-linter
        id: linter
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          pipx run cpp-linter \
          --version=14 \
          --style="" \
          --tidy-checks="" \
          --thread-comments=true \
          --files-changed-only=true \
          --ignore="build" \
          --database=build
      - name: Fail if linter found errors
        if: steps.linter.outputs.checks-failed > 0
        run: echo "Linter found errors" && exit 1
