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