replace pre-commit hook with hook in pre-create
This commit is contained in:
parent
61367a1f63
commit
f63cfb4462
|
@ -14,7 +14,8 @@
|
||||||
config.treefmt.build.wrapper
|
config.treefmt.build.wrapper
|
||||||
];
|
];
|
||||||
shellHook = ''
|
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"
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -9,6 +9,8 @@ currentBranch="$(git rev-parse --abbrev-ref HEAD)"
|
||||||
user="$(tea login list -o simple | cut -d" " -f4)"
|
user="$(tea login list -o simple | cut -d" " -f4)"
|
||||||
tempRemoteBranch="$user-$currentBranch"
|
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
|
git log --reverse --pretty="format:%s%n%n%b%n%n" "$remoteName/$targetBranch..HEAD" > "$TMPDIR"/commit-msg
|
||||||
|
|
||||||
$EDITOR "$TMPDIR"/commit-msg
|
$EDITOR "$TMPDIR"/commit-msg
|
||||||
|
|
|
@ -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
|
|
Loading…
Reference in New Issue
Block a user