repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.5.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-toml
- id: check-yaml
- id: check-json
- id: check-merge-conflict
- id: check-added-large-files
- repo: local
hooks:
- id: rustfmt
name: rustfmt
description: Format Rust code (matches CI format check)
entry: cargo fmt --all -- --check
language: system
types: [rust]
pass_filenames: false
stages: [pre-commit]
- id: cargo-check
name: cargo-check
description: Check Rust code compiles
entry: cargo check --all-targets --all-features
language: system
types: [rust]
pass_filenames: false
stages: [pre-commit]
- repo: local
hooks:
- id: clippy-strict
name: clippy-strict
description: Run strict clippy matching CI lint workflow
entry: bash -c 'cargo clippy --all-targets --all-features -- -D warnings'
language: system
types: [rust]
pass_filenames: false
stages: [pre-commit]
- repo: local
hooks:
- id: cargo-audit
name: cargo-audit
description: Security audit (matches CI security workflow)
entry: cargo audit --deny warnings
language: system
types: [rust]
pass_filenames: false
stages: [pre-push]
- id: cargo-deny
name: cargo-deny
description: License and dependency policy check
entry: cargo deny check
language: system
types: [rust]
pass_filenames: false
stages: [pre-push]
- id: cargo-machete
name: cargo-machete
description: Check for unused dependencies (matches CI)
entry: cargo machete
language: system
types: [rust]
pass_filenames: false
stages: [pre-push]
- repo: local
hooks:
- id: doc-check
name: doc-check
description: Check documentation builds (matches CI docs workflow)
entry: bash -c 'RUSTDOCFLAGS="-D warnings" cargo doc --no-deps --all-features --document-private-items'
language: system
types: [rust]
pass_filenames: false
stages: [pre-push]
- repo: local
hooks:
- id: test-lib
name: test-lib
description: Run unit tests (matches CI test suite)
entry: cargo test --lib --all-features
language: system
types: [rust]
pass_filenames: false
stages: [pre-push]
- id: test-integration
name: test-integration
description: Run integration tests
entry: cargo test --test integration_tests
language: system
types: [rust]
pass_filenames: false
stages: [pre-push]
- id: test-doc
name: test-doc
description: Run documentation tests
entry: cargo test --doc --all-features
language: system
types: [rust]
pass_filenames: false
stages: [pre-push]
- id: test-examples
name: test-examples
description: Check examples compile
entry: bash -c 'cargo check --examples && cargo build --examples'
language: system
types: [rust]
pass_filenames: false
stages: [pre-push]
- repo: https://github.com/compilerla/conventional-pre-commit
rev: v3.0.0
hooks:
- id: conventional-pre-commit
stages: [commit-msg]
args: [feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert]
default_stages: [pre-commit]
fail_fast: false