You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
2.1 KiB
78 lines
2.1 KiB
#!/usr/bin/env bash
|
|
# This file modified from k8s
|
|
# https://github.com/kubernetes/kubernetes/blob/master/hooks/pre-commit
|
|
# Now It's removed, The Reason is https://github.com/kubernetes/community/issues/729
|
|
# The PR is https://github.com/kubernetes/kubernetes/pull/47673
|
|
|
|
# How to use this hook?
|
|
# ln -s hooks/pre-commit .git/hooks/
|
|
# In case hook is not executable
|
|
# chmod +x .git/hooks/pre-commit
|
|
|
|
readonly reset=$(tput sgr0)
|
|
readonly red=$(tput bold; tput setaf 1)
|
|
readonly green=$(tput bold; tput setaf 2)
|
|
|
|
readonly goword=./tools/bin/goword
|
|
|
|
exit_code=0
|
|
|
|
# comment it by default. You can uncomment it.
|
|
# echo -ne "Checking that it builds..."
|
|
# if ! OUT=$(make 2>&1); then
|
|
# echo
|
|
# echo "${red}${OUT}"
|
|
# exit_code=1
|
|
# else
|
|
# echo "${green}OK"
|
|
# fi
|
|
# echo "${reset}"
|
|
|
|
echo -ne "Checking for files that need gofmt... "
|
|
files_need_gofmt=()
|
|
files=($(git diff --cached --name-only --diff-filter ACM | grep "\.go" | grep -v -e "^_vendor"))
|
|
for file in "${files[@]}"; do
|
|
# Check for files that fail gofmt.
|
|
diff="$(git show ":${file}" | gofmt -s -d 2>&1)"
|
|
if [[ -n "$diff" ]]; then
|
|
files_need_gofmt+=("${file}")
|
|
fi
|
|
done
|
|
|
|
if [[ "${#files_need_gofmt[@]}" -ne 0 ]]; then
|
|
echo "${red}ERROR!"
|
|
echo "Some files have not been gofmt'd. To fix these errors, "
|
|
echo "copy and paste the following:"
|
|
echo " gofmt -s -w ${files_need_gofmt[@]}"
|
|
exit_code=1
|
|
else
|
|
echo "${green}OK"
|
|
fi
|
|
echo "${reset}"
|
|
|
|
echo -ne "Checking for files that need goword... "
|
|
files_need_goword=()
|
|
files=($(git diff --cached --name-only --diff-filter ACM | grep "\.go" | grep -v -e "^_vendor"))
|
|
for file in "${files[@]}"; do
|
|
# Check for files that fail goword.
|
|
diff=$(${goword} ${file})
|
|
if [[ -n "$diff" ]]; then
|
|
files_need_goword+=("${file}")
|
|
fi
|
|
done
|
|
|
|
if [[ "${#files_need_goword[@]}" -ne 0 ]]; then
|
|
echo "${red}ERROR!"
|
|
echo "Some files may have spelling errors."
|
|
echo "copy and paste the following for where fails this test:"
|
|
echo " $ ${goword} ${files_need_goword[@]}"
|
|
exit_code=1
|
|
else
|
|
echo "${green}OK"
|
|
fi
|
|
echo "${reset}"
|
|
|
|
if [[ "${exit_code}" != 0 ]]; then
|
|
echo "${red}Aborting commit${reset}"
|
|
fi
|
|
exit ${exit_code}
|
|
|