From 29462937d386aaa39d74754976c6954bdfe0c96e Mon Sep 17 00:00:00 2001 From: t8y2 <1156263951@qq.com> Date: Tue, 26 May 2026 16:14:58 +0800 Subject: [PATCH] feat: implement formatting for staged Rust files in pre-commit hook --- .husky/pre-commit | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/.husky/pre-commit b/.husky/pre-commit index a3cb5805d..b5217365a 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,4 +1,22 @@ npx lint-staged -cd src-tauri && cargo fmt && git add -u . -cd "$(git rev-parse --show-toplevel)/crates/dbx-core" && cargo fmt --all && git add -u . -cd "$(git rev-parse --show-toplevel)/crates/dbx-web" && cargo fmt && git add -u . + +# Only format and re-add Rust files that are already staged +TOPLEVEL=$(git rev-parse --show-toplevel) + +format_staged_rust() { + local dir="$1" + local staged="" + staged=$(git diff --staged --name-only --diff-filter=ACM -- ":(top,literal)$dir/*.rs" ":(top,literal)$dir/**/*.rs" 2>/dev/null) + if [ -n "$staged" ]; then + echo "$staged" | while IFS= read -r f; do + rustfmt "$TOPLEVEL/$f" 2>/dev/null || true + done + echo "$staged" | while IFS= read -r f; do + git add "$TOPLEVEL/$f" 2>/dev/null || true + done + fi +} + +format_staged_rust "src-tauri" +format_staged_rust "crates/dbx-core" +format_staged_rust "crates/dbx-web"