replace pre-commit hook with hook in pre-create
All checks were successful
checks-impure / test (pull_request) Successful in 6s
checks / test (pull_request) Successful in 32s

This commit is contained in:
Jörg Thalheim 2023-09-13 15:48:34 +02:00
parent 61367a1f63
commit f63cfb4462
3 changed files with 4 additions and 53 deletions

View File

@ -14,7 +14,8 @@
config.treefmt.build.wrapper
];
shellHook = ''
ln -sf ../../scripts/pre-commit "$(git rev-parse --show-toplevel)/.git/hooks/pre-commit"
# no longer used
rm "$(git rev-parse --show-toplevel)/.git/hooks/pre-commit"
'';
};
};

View File

@ -9,6 +9,8 @@ currentBranch="$(git rev-parse --abbrev-ref HEAD)"
user="$(tea login list -o simple | cut -d" " -f4)"
tempRemoteBranch="$user-$currentBranch"
nix fmt -- --fail-on-change
git log --reverse --pretty="format:%s%n%n%b%n%n" "$remoteName/$targetBranch..HEAD" > "$TMPDIR"/commit-msg
$EDITOR "$TMPDIR"/commit-msg

View File

@ -1,52 +0,0 @@
#!/usr/bin/env bash
#
# Run treefmt on every commit and abort if some files have changed.
#
# To install, copy this file to .git/hooks/pre-commit and make sure it's
# executable.
#
set -euo pipefail
# Redirect stdout to stderr
exec 1>&2
# Get list of files that will be committed
mapfile -t commit_files < <(git diff --name-only --cached)
log() {
echo "treefmt pre-commit: $*"
}
# If the commit has no files, skip everything as there is nothing to format
if [[ -z ${commit_files+x} ]] || [[ ${#commit_files} = 0 ]]; then
log "no files to format"
exit 0
fi
# Will be called at the end
restore_stash() {
# Store exit status
local ret=$?
# Don't fail on error from now on
set +e
# Put bash the staged files
git stash pop -q
if [[ $ret -gt 0 ]]; then
log "aborting commit, detected unformatted files"
fi
exit "$ret"
}
# Stash index and work dir, keeping only the to-be-committed changes in
# the working directory.
git stash push --quiet --keep-index --message "treefmt pre-commit"
# Install the callback to restore the stash on script exit
trap restore_stash EXIT
# Run treefmt on the files in the index and record the result.
nix fmt -- "${commit_files[@]}"
# Check if there is a diff
git diff --name-only --exit-code