1#!/bin/sh 2 3ERROR_CODE=1 4SUCCESS_CODE=0 5 6printf '\nRunning golint...\n' 7 8# check if program `golint` exist 9if [ -z "$(which golint)" ]; then 10 printf '\nError: golint not found, run: go get github.com/golang/lint/golint\n' 11 exit $SUCCESS_CODE 12fi 13 14# find modified files 15gofiles=$(git diff --cached --name-only --diff-filter=ACM | grep '\.go$') 16 17# run golint for each modified file 18for gofile in $gofiles 19do 20 lint_result=$(golint $gofile) 21 err_count=$(echo $lint_result | wc -l | tr -d '[:space:]') 22 23 if [ "$err_count" = "0" ]; then 24 printf "\n$err_count suggestion(s) for $gofile" 25 printf "\t$lint_result" 26 fi 27done 28 29printf '\nFinish code lint...\n' 30 31# currently, always return success no matter when lint result is 32# [ -z "$errors" ] && exit $SUCCESS_CODE 33exit $SUCCESS_CODE 34