Skip to content

Instantly share code, notes, and snippets.

@tinyjin
Created October 17, 2018 08:51
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 tinyjin/056f4a11f9686e34548ed1eff116657a to your computer and use it in GitHub Desktop.
Save tinyjin/056f4a11f9686e34548ed1eff116657a to your computer and use it in GitHub Desktop.
pre-commit-trost
# 커밋 인덱스를 기반으로 eslint 검사 대상 파일 배열 생성
STAGED_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep ".js$")
# 경우에 따라 커밋 허용/거부 플래그 변수
PASS=true
# 커밋할 파일이 없으면 그냥 종료
if [ "$STAGED_FILES" -eq "" ]; then
exit 0
fi
# eslint 모듈이 설치되엇는지 확인
which ./node_modules/eslint/bin/eslint.js
# 설치가 안되어 있다면 설치 안내로그와 함께 종료
if [ "$?" -eq 1 ]; then
echo "ESLint가 설치안되있짜낭~!! 설치해졍~"
exit 1
fi
echo "커밋전 eslint는 확인했겠지~? ㅎㅎ 그럼 어디 한번 볼까?!"
# 대상 파일을 순회
for FILE in $STAGED_FILES
do
# 순회중인 파일에 eslint 검사
./node_modules/eslint/bin/eslint.js "$FILE" --quiet
if [ "$?" -eq 0 ]; then
# 파일의 eslint 검사가 통과했다면
echo "$FILE - \033[32m[ok]\033[0m"
else
# 파일의 eslint 검사가 실패했다면, 플래그 변수 false
echo "$FILE - \033[31m[failed]\033[0m"
PASS=false
fi
done
# 플래그 변수를 검사
# 하나의 파일이라도 실패했다면 [커밋 거부], 모두 통과시에만 [커밋 허용]
if ! $PASS; then
echo "\033[31m응~ 실패야~\033[0m"
exit 1
else
echo "\033[32m오 성공이야! 코드 너무 이쁘게 짰는걸~?\033[0m"
fi
exit $?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment