set -e
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
NC='\033[0m'
PREFIX="${GREEN}[PRECOMMIT]${NC}"
FAILURE="${RED}FAILED${NC}"
WARNING="${RED}[WARNING]${NC}"
SKIPPED="${YELLOW}SKIPPED${NC}"
SUCCESS="${GREEN}ok${NC}"
if git rev-parse --verify HEAD &>/dev/null
then
against=HEAD
else
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
fi
FAILED=0
printf "${PREFIX} Checking that all filenames are ascii ... "
if test $(git diff --cached --name-only --diff-filter=A -z $against | LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0
then
FAILED=1
printf "${FAILURE}\n"
else
printf "${SUCCESS}\n"
fi
printf "${PREFIX} Checking for bad whitespace ... "
if git diff-index --check --cached $against -- &>/dev/null; then
printf "${SUCCESS}\n"
else
FAILED=1
printf "${FAILURE}\n"
fi
printf "${PREFIX} Checking for shasum ... "
if command -v shasum &>/dev/null; then
printf "${SUCCESS}\n"
else
printf "${FAILURE}\n"
exit 1
fi
printf "${PREFIX} Checking formatting ... "
if [ "$SKIP_RUSTFMT" = 1 ]; then
printf "${SKIPPED}\n"
else
FMTFAILED=0
for file in $(git diff --name-only --cached);
do
if [ -f "$file" ] && [ ${file: -3} == ".rs" ] ; then
case "$file" in
"protocol/src/protocol_generated_verifier.rs"|"protocol/src/protocol_generated.rs")
;;
*)
if ! rustfmt --check "$file" --edition 2018; then
FAILED=1
FMTFAILED=1
fi
;;
esac
fi
done
if [ "$FMTFAILED" = 0 ]; then
printf "${SUCCESS}\n"
else
printf "${FAILURE}\n"
fi
fi
exit "$FAILED"