Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/sh
- STAGED_GO_FILES=$(git diff --cached --name-only | grep ".go$")
- if [[ "$STAGED_GO_FILES" = "" ]]; then
- exit 0
- fi
- GOLINT=$GOPATH/bin/golint
- GOIMPORTS=$GOPATH/bin/goimports
- # Check for golint
- if [[ ! -x "$GOLINT" ]]; then
- printf "\t\033[41mPlease install golint\033[0m (go get -u golang.org/x/lint/golint)"
- exit 1
- fi
- # Check for goimports
- if [[ ! -x "$GOIMPORTS" ]]; then
- printf "\t\033[41mPlease install goimports\033[0m (go get golang.org/x/tools/cmd/goimports)"
- exit 1
- fi
- PASS=true
- for FILE in $STAGED_GO_FILES
- do
- # Run goimports on the staged file
- $GOIMPORTS -w $FILE
- # Run golint on the staged file and check the exit status
- $GOLINT "-set_exit_status" $FILE
- if [[ $? == 1 ]]; then
- printf "\t\033[31mgolint $FILE\033[0m \033[0;30m\033[41mFAILURE!\033[0m\n"
- PASS=false
- else
- printf "\t\033[32mgolint $FILE\033[0m \033[0;30m\033[42mpass\033[0m\n"
- fi
- # Run govet on the staged file and check the exit status
- go vet $FILE
- if [[ $? != 0 ]]; then
- printf "\t\033[31mgo vet $FILE\033[0m \033[0;30m\033[41mFAILURE!\033[0m\n"
- PASS=false
- else
- printf "\t\033[32mgo vet $FILE\033[0m \033[0;30m\033[42mpass\033[0m\n"
- fi
- done
- if ! $PASS; then
- printf "\033[0;30m\033[41mCOMMIT FAILED\033[0m\n"
- exit 1
- else
- printf "\033[0;30m\033[42mCOMMIT SUCCEEDED\033[0m\n"
- fi
- exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement