Last active
October 15, 2020 14:40
-
-
Save tankred/d08c8137749f69bb1f77ee76d906d72c to your computer and use it in GitHub Desktop.
git hook shellcheck
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
STAGED_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep ".sh\{0,1\}$") | |
SHCHCK="shellcheck" | |
if [[ "$STAGED_FILES" = "" ]]; then | |
exit 0 | |
fi | |
PASS=true | |
printf "\nValidating shell scripts:\n" | |
for FILE in $STAGED_FILES | |
do | |
"$SHCHCK" "$FILE" | |
if [[ "$?" == 0 ]]; then | |
printf "\t\033[32mShellcheck Passed: $FILE\033[0m" | |
else | |
printf "\t\033[41mShellcheck Failed: $FILE\033[0m" | |
PASS=false | |
fi | |
done | |
printf "\nShellcheck validation completed!\n" | |
if ! $PASS; then | |
printf "\033[41mCOMMIT FAILED:\033[0m Your commit contains files that should pass Shellcheck but do not. Please fix the Shellcheck errors and try again.\n" | |
exit 1 | |
else | |
printf "\033[42mCOMMIT SUCCEEDED\033[0m\n" | |
fi | |
exit $? |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
heavily based on ESLINT pre-commit hook by Rashtay https://gist.github.com/rashtay/328da46a99a9d7c746636df1cf769675