ci:
    # pre-commit.ci does not install a Rust toolchain. Keep Cargo checks in
    # GitHub Actions CI and run these hooks locally where rustup/cargo exist.
    skip: [fmt, cargo-check, clippy]

repos:
    - repo: https://github.com/pre-commit/pre-commit-hooks
      rev: v6.0.0
      hooks:
          - id: check-added-large-files
          - id: check-case-conflict
          - id: check-merge-conflict
          - id: check-symlinks
          - id: check-yaml
          - id: check-toml
          - id: check-json
          - id: end-of-file-fixer
          - id: mixed-line-ending
          - id: trailing-whitespace

    - repo: https://github.com/doublify/pre-commit-rust
      rev: v1.0
      hooks:
          - id: fmt
            args: [--all]
            pass_filenames: false
          - id: cargo-check
            pass_filenames: false
          - id: clippy
            args: [--all-targets, --all-features, --, -D, warnings]
            pass_filenames: false

    - repo: https://github.com/astral-sh/ruff-pre-commit
      rev: v0.15.20
      hooks:
          - id: ruff
            args: [--fix, --config=pyproject.toml]
          - id: ruff-format

    - repo: https://github.com/astral-sh/uv-pre-commit
      rev: 0.11.27
      hooks:
          - id: uv-lock

    - repo: https://github.com/rhysd/actionlint
      rev: v1.7.12
      hooks:
          - id: actionlint

    - repo: https://github.com/ComPWA/taplo-pre-commit
      rev: v0.9.3
      hooks:
          - id: taplo-format

    - repo: https://github.com/crate-ci/typos
      rev: v1.48.0
      hooks:
          - id: typos
            args: []

    - repo: https://github.com/rbubley/mirrors-prettier
      rev: v3.9.4
      hooks:
          - id: prettier

    - repo: https://github.com/DavidAnson/markdownlint-cli2
      rev: v0.23.0
      hooks:
          - id: markdownlint-cli2
            args: [--config, .markdownlint.yaml]

    - repo: https://github.com/gitleaks/gitleaks
      rev: v8.30.1
      hooks:
          - id: gitleaks
