# Pre-commit (https://pre-commit.com) configuration for assorted lint checks.
#
# See https://pre-commit.com/hooks.html for more hooks.

exclude: "third_party/"

repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v3.2.0
    hooks:
      - id: check-merge-conflict

      - id: check-yaml
        # * Extensions can't be included in the mkdocs schema, so skip checking
        #   https://github.com/squidfunk/mkdocs-material/issues/6378
        # * clang-format files use `---` to split for multiple languages,
        #   resulting in errors like `expected a single document in the stream`
        exclude: "mkdocs.yml|.clang-format"

      - id: end-of-file-fixer
        exclude_types: ["image", "jupyter"]
        exclude: ".*\\.excalidraw"

      - id: trailing-whitespace
        exclude_types: ["image", "jupyter"]

  - repo: https://github.com/psf/black
    rev: 23.3.0
    hooks:
      - id: black
        name: Run Black to format Python files

  - repo: https://github.com/pre-commit/mirrors-clang-format
    # Loosely track the most recent versions in
    #   * Runner images: https://github.com/actions/runner-images/
    #   * Editor extensions: https://github.com/microsoft/vscode-cpptools
    rev: v18.1.3
    hooks:
      - id: clang-format
        name: Run clang-format on C/C++/etc. files
        exclude_types: ["jupyter"]

  - repo: https://github.com/igorshubovych/markdownlint-cli
    rev: v0.41.0
    hooks:
      - id: markdownlint
        name: Run markdownlint on .md files
        args: ["--config", "docs/.markdownlint.yml"]
        files: "docs/website/.*.md"
        exclude: "mlir-dialects/!(index).md"

  - repo: https://github.com/Lucas-C/pre-commit-hooks
    rev: v1.5.5
    hooks:
      - id: forbid-tabs
        exclude: ".gitmodules|Makefile"

  - repo: https://github.com/jlebar/pre-commit-hooks.git
    rev: f2d115a052860b09b2888b4f104be614bf3b4779
    hooks:
      - id: do-not-submit

  - repo: local
    hooks:
      - id: buildifier
        name: Run buildifier
        entry: buildifier
        language: golang
        # Pinned to v7.1.2, but of course we can't use a tag because semver
        # and "go install" just don't work together???
        # This makes absolutely no sense and the maintainers have no intention
        # of improving it or at least explaining it as hundreds of developers
        # search for basic support: https://github.com/golang/go/issues/35732.
        # Docs are technically at https://go.dev/ref/mod#go-install ¯\_(ツ)_/¯
        additional_dependencies:
          [
            "github.com/bazelbuild/buildtools/buildifier@1429e15ae755a6762d0edf9198062dc6ed04408d",
          ]
        files: '^(.*/)?(BUILD\.bazel|BUILD|WORKSPACE|WORKSPACE\.bazel|WORKSPACE\.bzlmod|MODULE\.bazel)$|\.BUILD$|\.bzl$'
        # Pin the language version so other system version are _not_ used.
        # Older go versions used different syntax for "go install" (which is
        # apparently different from "go get" and "go build"), so for this to
        # work reliably at all we need to ensure at least some minimum. Syntax
        # probably changed again in a future version, whatever.
        language_version: "1.16"

      # Convert BUILD.bazel files to CMakeLists.txt files in two passes to
      # avoid potential race conditions.
      # Note: this passes file names to the tool. The tool can also be run
      # manually with no arguments specified to walk directories on its own.
      # Keep the top level directories here in sync with .bazel_to_cmake.cfg.py.
      - id: bazel_to_cmake_1
        name: Run bazel_to_cmake.py on BUILD.bazel files
        language: python
        entry: ./build_tools/bazel_to_cmake/bazel_to_cmake.py
        files: '^(compiler|runtime|samples|tests|tools)/(.*/)?(BUILD\.bazel)$'
      - id: bazel_to_cmake_2
        name: Run bazel_to_cmake.py on CMakeLists.txt files
        language: python
        entry: ./build_tools/bazel_to_cmake/bazel_to_cmake.py
        files: "^(compiler|runtime|samples|tests|tools)/(.*/)?(CMakeLists.txt)$"

      - id: check_path_lengths
        name: Check for excessively long path lengths
        language: fail
        entry: Path lengths relative to the root should be < 75 characters (run ./build_tools/scripts/check_path_lengths.py for detailed output)
        # The regex includes/excludes here should roughly match the behavior of
        # the check_path_lengths.py script.
        files: '^compiler/.{66,}/\w+\.'
        exclude: "test/"

      - id: build_file_names
        name: Check Bazel file names
        entry: Files should be named BUILD.bazel instead of BUILD
        language: fail
        files: "BUILD$"

    # TODO(scotttodd): mypy type checking for Python (https://mypy-lang.org/)
