name: cpp_lint

# lint on c/cpp changes or workflow changes
on:
  push:
    paths:
      - 'lib/**.[ch]'
      - 'lib/**.cpp'
      - 'src/**.[ch]'
      - 'src/**.cpp'
      - '**/CMakeLists.txt'
      - 'cmake/Modules/**'
      - 'util/ci/**'
      - '.github/workflows/**.yml'
  pull_request:
    paths:
      - 'lib/**.[ch]'
      - 'lib/**.cpp'
      - 'src/**.[ch]'
      - 'src/**.cpp'
      - '**/CMakeLists.txt'
      - 'cmake/Modules/**'
      - 'util/ci/**'
      - '.github/workflows/**.yml'

jobs:
  clang_format:
    runs-on: ubuntu-18.04
    steps:
      - uses: actions/checkout@v2
      - name: Install clang-format
        run: |
          sudo apt-get install clang-format-9 -qyy

      - name: Run clang-format
        run: |
          source ./util/ci/lint.sh
          perform_lint
        env:
          CLANG_FORMAT: clang-format-9

  clang_tidy:
    runs-on: ubuntu-18.04
    steps:
    - uses: actions/checkout@v2
    - name: Install deps
      run: |
        sudo apt-get install clang-tidy-9 -qyy
        source ./util/ci/common.sh
        install_linux_deps

    - name: Run clang-tidy
      run: |
        ./util/ci/clang-tidy.sh
