name: Run clang-tidy on the full codebase

on:
  workflow_dispatch:

jobs:
  clang_tidy_check:
    name: "Clang-tidy check"
    runs-on: [self-hosted, Linux, X64, Ubuntu20.04]
    env:
      THREADS: 24
      MEMGRAPH_ENTERPRISE_LICENSE: ${{ secrets.MEMGRAPH_ENTERPRISE_LICENSE }}
      MEMGRAPH_ORGANIZATION_NAME: ${{ secrets.MEMGRAPH_ORGANIZATION_NAME }}

    steps:
      - name: Set up repository
        uses: actions/checkout@v3
        with:
          # Number of commits to fetch. `0` indicates all history for all
          # branches and tags. (default: 1)
          fetch-depth: 0

      - name: Build debug binaries
        run: |
          # Activate toolchain.
          source /opt/toolchain-v4/activate

          # Initialize dependencies.
          ./init

          # Build debug binaries.

          cd build
          cmake ..
          make -j$THREADS

      - name: Run clang-tidy
        run: |
          source /opt/toolchain-v4/activate

          # The results are also written to standard output in order to retain them in the logs
          ./tools/github/clang-tidy/run-clang-tidy.py -p build -j $THREADS -clang-tidy-binary=/opt/toolchain-v4/bin/clang-tidy "$PWD/src/*" |
            tee ./build/full_clang_tidy_output.txt

      - name: Summarize clang-tidy results
        run: cat ./build/full_clang_tidy_output.txt | ./tools/github/clang-tidy/count_errors.sh
