# Pre-commit is tool which we use to format and check this repository. This is
# also used in CI. You will still get nicer commits if you install it also
# locally.
#
# To install pre-commit run in repository root:
#   pip install pre-commit
#   pre-commit install
#
# To ignore pre-commit checks run:
#   git commit --no-verify
#   or
#   pre-commit uninstall

# Just in case exclude build and .git folders. Others are for external files.
exclude: build|\.git|external/|BACnet\-Server\.X/|tools/(avstack|check\-stack\-usage|memap)|test/ztest/

repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: 2c9f875913ee60ca25ce70243dc24d5b6415598c # v4.6.0
    hooks:
      - id: check-merge-conflict
        args: [--assume-in-merge]
      # Editorconfig-checker does not care if file contains multiple newlines.
      - id: end-of-file-fixer
        exclude: '.*\.(cproj|vcxproj.*|props)$'
      - id: check-yaml
        args: [
            # for .clang-format
            --allow-multiple-documents,
          ]
      - id: check-case-conflict
      - id: check-shebang-scripts-are-executable
      - id: fix-byte-order-marker
        # Seems that VS files are using BOMs.
        exclude: '.*\.(cproj|vcxproj.*|sln|atsln|props)$'
      - id: trailing-whitespace

  - repo: https://github.com/Lucas-C/pre-commit-hooks
    rev: a30f0d816e5062a67d87c8de753cfe499672b959 # v1.5.5
    hooks:
      - id: remove-tabs
        name: Remove tabs (4 spaces)
        args: ["--whitespaces-count", "4"]
        exclude: \.(yaml|yml|html|htm|sln|atsln|layout)$|Makefile|\.(mgw|mak|MAK)$|Dockerfile$
      - id: remove-tabs
        name: Remove tabs (2 spaces)
        args: ["--whitespaces-count", "2"]
        files: '.*\.(yaml|yml|html|htm)|Dockerfile$'

  - repo: https://github.com/pre-commit/mirrors-clang-format
    rev: 05241dc3def184dba136e62d54ff57f1c8a497a9 # v17.0.6
    hooks:
      - id: clang-format

  # We might enable this in future.
  # - repo: https://github.com/pre-commit/mirrors-prettier
  #   rev: ffb6a759a979008c0e6dff86e39f4745a2d9eac4 # v3.1.0
  #   hooks:
  #     - id: prettier

  - repo: https://github.com/pre-commit/pygrep-hooks
    rev: v1.10.0 # v1.10.0
    hooks:
      - id: text-unicode-replacement-char

  - repo: https://github.com/editorconfig-checker/editorconfig-checker.python
    rev: 3.2.0 #2.6.2
    hooks:
      - id: editorconfig-checker
        alias: ec
        args: [
            # Saddly we have to disable this, but it just won't work. Maybe some day.
            -disable-indent-size,
          ]
