fail_fast: true

exclude: |
  (?x)^(
    .*/(snapshots)/.*|
  )$

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

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

  - repo: local
    hooks:
      - id: rustfmt
        name: rustfmt
        entry: rustfmt
        language: system
        types: [rust]

  - repo: local
    hooks:
      - id: cargo-dev-generate-all
        name: cargo dev generate-all
        entry: cargo dev generate-all
        language: system
        types: [rust]
        pass_filenames: false
        files: ^crates/(uv-cli|uv-settings)/

  - repo: local
    hooks:
      - id: prettier
        name: prettier
        entry: prettier --write --ignore-unknown
        language: node
        additional_dependencies: ["prettier@3"]
        types_or: [yaml, json5]

  - repo: https://github.com/astral-sh/ruff-pre-commit
    rev: v0.14.14
    hooks:
      - id: ruff-format
      - id: ruff
        args: [--fix, --exit-non-zero-on-fix]
