fail_fast: true

exclude: |
  (?x)^(
    crates/ruff_linter/resources/.*|
    crates/ruff_linter/src/rules/.*/snapshots/.*|
    crates/ruff/resources/.*|
    crates/ruff_python_formatter/resources/.*|
    crates/ruff_python_formatter/tests/snapshots/.*|
    crates/ruff_python_resolver/resources/.*|
    crates/ruff_python_resolver/tests/snapshots/.*
  )$

repos:
  - repo: https://github.com/abravalheri/validate-pyproject
    rev: v0.16
    hooks:
      - id: validate-pyproject

  - repo: https://github.com/executablebooks/mdformat
    rev: 0.7.17
    hooks:
      - id: mdformat
        additional_dependencies:
          - mdformat-mkdocs
          - mdformat-admon
        exclude: |
          (?x)^(
            docs/formatter/black\.md
            | docs/\w+\.md
          )$

  - repo: https://github.com/igorshubovych/markdownlint-cli
    rev: v0.39.0
    hooks:
      - id: markdownlint-fix
        exclude: |
          (?x)^(
            docs/formatter/black\.md
            | docs/\w+\.md
          )$

  - repo: https://github.com/crate-ci/typos
    rev: v1.20.8
    hooks:
      - id: typos

  - repo: local
    hooks:
      - id: cargo-fmt
        name: cargo fmt
        entry: cargo fmt --
        language: system
        types: [rust]
        pass_filenames: false # This makes it a lot faster

  - repo: https://github.com/astral-sh/ruff-pre-commit
    rev: v0.3.7
    hooks:
      - id: ruff-format
      - id: ruff
        args: [--fix, --exit-non-zero-on-fix]
        types_or: [python, pyi]
        require_serial: true
        exclude: |
          (?x)^(
            crates/ruff_linter/resources/.*|
            crates/ruff_python_formatter/resources/.*
          )$

  # Prettier
  - repo: https://github.com/pre-commit/mirrors-prettier
    rev: v3.1.0
    hooks:
      - id: prettier
        types: [yaml]

ci:
  skip: [cargo-fmt, dev-generate-all]
