-
-
Save wenerme/4f6d5b8bea2e7fdeb407fe0311036d4f to your computer and use it in GitHub Desktop.
Pre-commit hook to check for Javascript using ESLint
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 | |
# List files | |
STAGED_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep ".jsx\{0,1\}$") | |
if [[ "$STAGED_FILES" = "" ]]; then | |
exit 0 | |
fi | |
# Try find node | |
which node &> /dev/null | |
if [[ "$?" == 1 ]]; then | |
PATH=$PATH:/usr/local/bin:/usr/local/sbin | |
fi | |
which node &> /dev/null | |
if [[ "$?" == 1 ]]; then | |
echo "\tNo node has been found" | |
exit 1 | |
fi | |
# Try find eslint | |
ESLINT="$(git rev-parse --show-toplevel)/node_modules/.bin/eslint" | |
if [[ ! -x "$ESLINT" ]]; then | |
# global eslint | |
which eslint &> /dev/null | |
if [[ "$?" == 1 ]]; then | |
echo "\t\033[41mPlease install ESlint\033[0m" | |
exit 1 | |
fi | |
ESLINT="$(which eslint)" | |
fi | |
PASS=true | |
echo "\nValidating Javascript:\n" | |
for FILE in $STAGED_FILES | |
do | |
"$ESLINT" "$FILE" | |
if [[ "$?" == 0 ]]; then | |
echo "\t\033[32mESLint Passed: $FILE\033[0m" | |
else | |
echo "\t\033[41mESLint Failed: $FILE\033[0m" | |
PASS=false | |
fi | |
done | |
echo "\nJavascript validation completed!\n" | |
if ! $PASS; then | |
echo "\033[41mCOMMIT FAILED:\033[0m Your commit contains files that should pass ESLint but do not. Please fix the ESLint errors and try again.\n" | |
exit 1 | |
else | |
echo "\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