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

  - repo: https://github.com/executablebooks/mdformat
    rev: 0.7.16
    hooks:
      - id: mdformat
        additional_dependencies:
          - mdformat-black
          - black==23.1.0 # Must be the latest version of Black

  - repo: https://github.com/igorshubovych/markdownlint-cli
    rev: v0.33.0
    hooks:
      - id: markdownlint-fix
        args:
          - --disable
          - MD013 # line-length
          - MD033 # no-inline-html
          - --

  - repo: local
    hooks:
      - id: cargo-fmt
        name: cargo fmt
        entry: cargo fmt --
        language: system
        types: [rust]
      - id: clippy
        name: clippy
        entry: cargo clippy --workspace --all-targets --all-features -- -D warnings
        language: system
        pass_filenames: false
      - id: ruff
        name: ruff
        entry: cargo run -p ruff_cli -- check --no-cache --force-exclude --fix --exit-non-zero-on-fix
        language: system
        types_or: [python, pyi]
        require_serial: true
        exclude: |
          (?x)^(
            crates/ruff/resources/.*|
            crates/ruff_python_formatter/resources/.*
          )$
      - id: dev-generate-all
        name: dev-generate-all
        entry: cargo dev generate-all
        language: system
        pass_filenames: false
        exclude: target

  # Black
  - repo: https://github.com/psf/black
    rev: 23.1.0
    hooks:
      - id: black
        exclude: |
          (?x)^(
            crates/ruff/resources/.*|
            crates/ruff_python_formatter/resources/.*
          )$

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