From f46e096d3500133e09b975309a958fe3ef27740c Mon Sep 17 00:00:00 2001 From: Yuri Astrakhan Date: Tue, 3 Jun 2025 18:59:36 -0400 Subject: [PATCH] Add common pre-commit hooks Pre-commits are usually used to minimize busy work by the contributors, e.g., by fixing extra spacing, formatting, etc. This PR adds various basic text file checks to the repo. I also made yaml spacing a bit cleaner. I was a bit surprised it is used for `cargo clippy` because you wouldn't want clippy's auto-fixes to be auto-applied by CI, so usually GitHub workflow simply checks runs it regularly. This is outside of the scope for this PR, but perhaps it should be removed here? --- .pre-commit-config.yaml | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 534487abc..8498f42ea 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,21 +1,41 @@ +# See https://pre-commit.com for more information +# See https://pre-commit.com/hooks.html for more hooks repos: -- repo: local + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v5.0.0 hooks: - - id: rust-linting + - id: check-added-large-files + - id: check-executables-have-shebangs + - id: check-json + - id: check-shebang-scripts-are-executable + exclude: '.+\.rs' # would be triggered by #![some_attribute] + - id: check-symlinks + - id: check-toml + - id: check-yaml + args: [ --allow-multiple-documents ] + - id: destroyed-symlinks + - id: end-of-file-fixer + - id: mixed-line-ending + args: [ --fix=lf ] + - id: trailing-whitespace + + - repo: local + hooks: + - id: rust-linting name: Rust linting description: Run cargo fmt on files included in the commit. entry: cargo +stable fmt -- pass_filenames: true types: [file, rust] language: system - - id: rust-clippy + - id: rust-clippy name: Rust clippy description: Run cargo clippy on files included in the commit. entry: cargo +stable clippy --workspace --all-targets --all-features -- -D warnings pass_filenames: false types: [file, rust] language: system - - id: cspell + - id: cspell name: Code spell checker (cspell) description: Run cspell to check for spelling errors. entry: cspell --no-must-find-files --