repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: 3e8a8703264a2f4a69428a0aa4dcb512790b2c8c  # frozen: v6.0.0
    hooks:
      - id: trailing-whitespace
      - id: check-added-large-files
      - id: check-merge-conflict

  - repo: https://github.com/pre-commit/mirrors-clang-format
    rev: 182152eb8c5ce1cf5299b956b04392c86bd8a126  # frozen: v20.1.8
    hooks:
      - id: clang-format
        exclude: ".*third_party/.*"

  - repo: https://github.com/cheshirekow/cmake-format-precommit
    rev: e2c2116d86a80e72e7146a06e68b7c228afc6319  # frozen: v0.6.13
    hooks:
      - id: cmake-format

  - repo: https://github.com/psf/black
    rev: 8a737e727ac5ab2f1d4cf5876720ed276dc8dc4b  # frozen: 25.1.0
    hooks:
      - id: black
        language_version: python3

  - repo: local
    hooks:
      - id: snake-case-enforcement
        name: Enforce snake_case naming
        entry: ./tools/check_snake_case.py
        language: script
        files: '\.(hpp|cpp)$'
        exclude: '^build/'
        args: ['--check-new-code-only']
