name: clang-tidy

on:
  push:
    paths-ignore:
      - 'docker-compose/**'
      - 'docs/**'
      - 'README.md'

  pull_request:

jobs:
  clang-tidy:
    runs-on: ubuntu-22.04

    steps:
    - name: Install dependencies
      run: |
        sudo apt update
        sudo apt install -y libuv1-dev libzmq3-dev libcurl4-openssl-dev

    - name: Install clang
      run: |
        wget https://apt.llvm.org/llvm.sh
        chmod +x llvm.sh
        sudo ./llvm.sh 18
        sudo apt-get install -y clang-tidy-18
        clang-tidy-18 --verify-config

    - name: Checkout repository
      uses: actions/checkout@v4
      with:
        submodules: true

    - name: cmake p2pool
      run: |
        mkdir build
        cd build
        cmake .. -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_C_COMPILER=clang-18 -DCMAKE_CXX_COMPILER=clang++-18 -DDEV_CLANG_TIDY=ON

    - name: Run clang-tidy
      run: |
        cd src
        clang-tidy-18 *.cpp -p ../build -checks=-clang-diagnostic-undefined-internal,-clang-diagnostic-nan-infinity-disabled -warnings-as-errors=* -header-filter=^[^\.]
