Skip to content

Instantly share code, notes, and snippets.

@a-m-dev
Last active February 3, 2020 08:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save a-m-dev/6c83370cf0f57223f80c4284e4de5dcf to your computer and use it in GitHub Desktop.
Save a-m-dev/6c83370cf0f57223f80c4284e4de5dcf to your computer and use it in GitHub Desktop.
git pre commit
#!/bin/bash
# colors
RED='\033[0;31m'
GREEN='\033[0;32m'
BLUE='\033[0;34m'
PURPLE='\033[0;35m'
LIGHT_RED='\033[1;31m'
LIGHT_GREEN='\033[1;32m'
LIGHT_BLUE='\033[1;34m'
LIGHT_PURPLE='\033[1;35m'
LIGHT_GRAY='\033[0;37m'
NC='\033[0m'
# find staged files
STAGED_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep ".jsx?\{0,1\}$")
if [[ "$STAGED_FILES" == "" ]]; then
echo -e ""
echo -e " ${LIGHT_PURPLE}=========================================================================${NC}"
echo -e " ${LIGHT_PURPLE}>>> there were no files to check or all changes are not added to stage...${NC}"
echo -e " ${LIGHT_PURPLE}>>> please if there any file, stage them and try again!${NC}"
echo -e " ${LIGHT_PURPLE}=========================================================================${NC}\n"
exit 0
fi
PASS=true
echo ""
echo -e " ${LIGHT_BLUE}Starting to Validating Jsx files:${NC}\n"
# Check for eslint
which eslint &> /dev/null
if [[ "$?" == 1 ]]; then
echo " ${LIGHT_RED}**ES LINT** not found, install it first using this command `npm i -D eslint`!${NC}"
exit 1
fi
COMPLETED=0
PASSED=0
FAILED=0
for FILE in $STAGED_FILES
do
echo -e " ${LIGHT_PURPLE}Starting to lint:${NC} $FILE"
echo -e " ${LIGHT_PURPLE}=========================================================================${NC} \n"
eslint "$FILE"
if [[ "$?" == 0 ]]; then
echo -e " ${LIGHT_GREEN}=========================================================================${NC}"
echo -e " ${LIGHT_GREEN}[ESlint] Passed: $FILE ${NC}"
echo -e " ${LIGHT_GREEN}=========================================================================${NC}\n\n"
((PASSED=PASSED+1))
else
echo -e " ${LIGHT_RED}=========================================================================${NC}"
echo -e " ${LIGHT_RED}[ESlint] Failed: $FILE ${NC}"
echo -e " ${LIGHT_RED}=========================================================================${NC}\n\n"
PASS=false
((FAILED=FAILED+1))
fi
((COMPLETED=COMPLETED+1))
done
echo -e " ${LIGHT_GREEN}Lint Complete!"
echo -e " ${LIGHT_GREEN}===============${NC}\n"
echo -e " ${LIGHT_GREEN} Passed: ${PASSED}${NC}"
echo -e " ${LIGHT_RED} Failed: ${FAILED}${NC}"
echo -e " ${LIGHT_BLUE} --------------------${NC}"
echo -e " ${LIGHT_PURPLE} Total: ${COMPLETED}${NC}\n"
echo -e " ${LIGHT_GREEN}=========================================================================${NC}\n\n"
if ! $PASS; then
echo -e ""
echo -e " ${LIGHT_RED}COMMIT FAILED:${NC}"
echo -e " ${LIGHT_RED}==============${NC}"
echo -e " - Your commited files might be revised and pass eslint criterias first, fix them before and try again!"
echo -e ""
exit 1
else
echo -e ""
echo -e " ${LIGHT_GREEN}COMMIT SUCCEEDED:${NC}"
echo -e " ${LIGHT_GREEN}=================${NC}"
echo -e " - Commit Done! ${NC}"
echo -e ""
fi
exit $?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment