Last active
February 3, 2020 08:26
-
-
Save a-m-dev/6c83370cf0f57223f80c4284e4de5dcf to your computer and use it in GitHub Desktop.
git pre commit
This file contains hidden or 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/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