OpenMC/tools/dev/post-commit.git-clang-format

38 lines
1.1 KiB
Bash
Executable file

#!/bin/sh -e
if [ -n "${SKIP_GCF}" ]; then
# Running inside of another git-clang-format hook
exit 0
fi
if ! command -v git-clang-format >/dev/null 2>&1 ; then
printf "\e[1;33mgit-clang-format is not installed!\e[0m
Install clang to enable auto-formatting.
" >&2
exit 0
fi
if ! git diff-files --quiet ; then
printf "\e[1;33mWill not git-clang-format: repository is dirty\e[0m. \e[33m \
Stage (with 'git add') or stash (with 'git stash') all files before committing \
to apply formatting.\e[0m
" >&2
exit 0
fi
printf "\e[2;37;40mRunning git-clang-format...\e[0m" >&2
CLANG_FORMAT_RESULT="$(git-clang-format HEAD^)"
if git diff-files --quiet ; then
printf "\r\e[2;32mAll code changes were properly formatted\e[0m\n" >&2
else
BAD_COMMIT=$(git rev-parse --short HEAD)
printf "\r\e[0;33mCode formatting changes were required:\e[0m\n" >&2
printf "${CLANG_FORMAT_RESULT}\n" >&2
git add -u :/
SKIP_GCF=1 git commit --amend -C HEAD >/dev/null
GOOD_COMMIT=$(git rev-parse --short HEAD)
printf "\e[2;37mTo view formatting changes:
git diff ${BAD_COMMIT} ${GOOD_COMMIT}\e[0m
" >&2
fi