From 0f06fcb6b15f3b433e668200a1d91bd11cebbba8 Mon Sep 17 00:00:00 2001 From: Scott Worley Date: Thu, 13 Jul 2023 11:53:23 -0700 Subject: [PATCH] git pre-commit hook --- git-pre-commit-hook | 38 ++++++++++++++++++++++++++++++++++++++ src/lib.rs | 1 + 2 files changed, 39 insertions(+) create mode 100755 git-pre-commit-hook diff --git a/git-pre-commit-hook b/git-pre-commit-hook new file mode 100755 index 0000000..1cc63cb --- /dev/null +++ b/git-pre-commit-hook @@ -0,0 +1,38 @@ +#!/usr/bin/env bash + +# Copy me to .git/hooks/pre-commit + +set -euo pipefail + +tmpdir= +cleanup_tmpdir() { + if [[ "$tmpdir" && -e "$tmpdir" ]];then + rm -rf "$tmpdir" + fi +} +trap cleanup_tmpdir EXIT + +# Check out the git index (what's about to be committed) in a temporary +# directory & run the supplied command there. +in_git_index_in_tmpdir() { + tmpdir=$(mktemp -d) + [[ "$tmpdir" && -d "$tmpdir" ]] + start_index=$(sha256sum "${GIT_INDEX_FILE:-.git/index}") + git checkout-index --prefix="$tmpdir/" -a + pushd "$tmpdir" + "$@" + popd + end_index=$(sha256sum "${GIT_INDEX_FILE:-.git/index}") + if [[ "$start_index" != "$end_index" ]];then + echo "Index changed while pre-commit tests were running. Aborting!" + exit 1 + fi +} + +verify() { + cargo test + cargo clippy -- -D warnings -W clippy::pedantic + rustfmt --check src/*.rs +} + +in_git_index_in_tmpdir verify diff --git a/src/lib.rs b/src/lib.rs index 7d12d9a..c90799e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,3 +1,4 @@ +#[must_use] pub fn add(left: usize, right: usize) -> usize { left + right } -- 2.44.1