#!/usr/bin/env bash set -euo pipefail ROOT="$(git rev-parse --show-toplevel)" cd "$ROOT" PATHS="$(mktemp)" trap 'rm -f "$PATHS"' EXIT git diff --cached --name-only --no-renames -z > "$PATHS" while IFS= read -r -d '' path; do case "$path" in Cargo.toml|Cargo.lock|.gitmodules|.cargo/*|rust-toolchain*|rustfmt.toml|.rustfmt.toml|*.rs|*/Cargo.toml|src/core/*|src/infra/homie-protocol/*|src/infra/roci|src/infra/roci/*|.githooks/*) echo "pre-commit: checking Rust workspace formatting and homie-core clippy" cargo fmt --all -- --check cargo clippy --locked -p homie-core --all-targets --all-features -- -D warnings exit 0 ;; esac done < "$PATHS"