name: Run clang-tidy
on:
  push:
    paths:
    - '**.c'
    - '**.h'
  pull_request:

jobs:
  analyze:
    runs-on: ubuntu-24.04

    name: clang-tidy
    steps:
    - uses: actions/checkout@v4
      with:
        fetch-depth: 0
    - name: Install clang-tidy
      run: |
        sudo apt install clang-tidy

    - name: Build
      run: |
        mkdir build && cd build
        CC=clang cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DBUILD_SHARED_LIBS=1 ..
        CC=clang sudo cmake --build . --config Release
        cd ..

    - name: Install clang-tidy-18
      run: |
        sudo apt install clang-tidy-18

    - name: Check for warnings
      env:
        base_sha: ${{ github.event.pull_request.base.sha }}
        head_sha: ${{ github.event.pull_request.head.sha }}
      run: |
        ./run-clang-tidy.sh build

    - uses: actions/upload-artifact@v4
      if: ${{ failure() }}
      with:
        path: ct-warnings.txt
