@@ -5,16 +5,23 @@ set -e -o pipefail
55REPO_ROOT=" $( cd -- " $( dirname -- " ${BASH_SOURCE[0]} " ) /.." & > /dev/null && pwd ) "
66export REPO_ROOT
77
8+ LINT_TAGS=" e2e,ledger,test_ledger_mock"
9+ if [[ ! -z " ${NIX:- } " ]]; then
10+ LINT_TAGS+=" ,rocksdb"
11+ fi
12+ export LINT_TAGS
13+
814lint_module () {
915 local root=" $1 "
1016 shift
11- cd " $( dirname " $root " ) " &&
12- echo " linting $( grep " ^module" go.mod) [$( date -Iseconds -u) ]" &&
13- if [[ -z " ${NIX:- } " ]]; then
14- golangci-lint run ./... -c " ${REPO_ROOT} /.golangci.yml" " $@ " --build-tags=e2e,ledger,test_ledger_mock
17+ if [ -f $root ]; then
18+ cd " $( dirname " $root " ) "
1519 else
16- golangci-lint run ./... -c " ${ REPO_ROOT} /.golangci.yml " " $@ " --build-tags=rocksdb,e2e,ledger,test_ledger_mock
20+ cd " $ REPO_ROOT/ $root "
1721 fi
22+ echo " linting $( grep " ^module" go.mod) [$( date -Iseconds -u) ]"
23+ golangci-lint run ./... -c " ${REPO_ROOT} /.golangci.yml" " $@ " --build-tags=${LINT_TAGS}
24+
1825 # always lint simapp with app_v1 build tag, otherwise it never gets linted
1926 if [[ " $( grep " ^module" go.mod) " == " module cosmossdk.io/simapp" ]]; then
2027 golangci-lint run ./... -c " ${REPO_ROOT} /.golangci.yml" " $@ " --build-tags=app_v1
@@ -24,31 +31,31 @@ export -f lint_module
2431
2532# if LINT_DIFF env is set, only lint the files in the current commit otherwise lint all files
2633if [[ -z " ${LINT_DIFF:- } " ]]; then
27- find " ${REPO_ROOT} " -type f -name go.mod -print0 |
28- xargs -0 -I{} bash -c ' lint_module "$@"' _ {} " $@ "
34+ find " ${REPO_ROOT} " -type f -name go.mod -print0 | xargs -0 -I{} bash -c ' lint_module "$@"' _ {} " $@ "
2935else
3036 if [[ -z $GIT_DIFF ]]; then
31- GIT_DIFF=$( git diff --name-only --diff-filter=d | grep \. go$ | grep -v \. pb \. go$ ) || true
37+ GIT_DIFF=$( git diff --name-only) || true
3238 fi
3339
3440 if [[ -z " $GIT_DIFF " ]]; then
3541 echo " no files to lint"
3642 exit 0
3743 fi
3844
39- for f in $( dirname $( echo " $GIT_DIFF " | tr -d " '" ) | uniq) ; do
40- echo " linting $f [$( date -Iseconds -u) ]" &&
41- cd $f &&
42- if [[ (-z " ${NIX:- } " && $f ! = store) || $f == " tools/" * ]]; then
43- golangci-lint run ./... -c " ${REPO_ROOT} /.golangci.yml" " $@ " --build-tags=e2e,ledger,test_ledger_mock
44- else
45- golangci-lint run ./... -c " ${REPO_ROOT} /.golangci.yml" " $@ " --build-tags=rocksdb,e2e,ledger,test_ledger_mock
46- fi
45+ GIT_DIFF=$( echo $GIT_DIFF | tr -d " '" | tr ' ' ' \n' | grep ' \.go$' | grep -v ' \.pb\.go$' | grep -Eo ' ^[^/]+\/[^/]+' | uniq)
4746
48- if [[ $f == simapp || $f == simapp/simd/cmd ]]; then
49- golangci-lint run ./... -c " ${REPO_ROOT} /.golangci.yml" " $@ " --build-tags=app_v1
47+ lint_sdk=false
48+ for dir in ${GIT_DIFF[@]} ; do
49+ if [[ ! -f " $REPO_ROOT /$dir /go.mod" ]]; then
50+ lint_sdk=true
51+ else
52+ lint_module $dir " $@ "
5053 fi
51-
52- cd $REPO_ROOT
5354 done
54- fi
55+
56+ if [[ $lint_sdk ]]; then
57+ cd " $REPO_ROOT "
58+ echo " linting github.com/cosmos/cosmos-sdk [$( date -Iseconds -u) ]"
59+ golangci-lint run ./... -c " ${REPO_ROOT} /.golangci.yml" " $@ " --build-tags=${LINT_TAGS}
60+ fi
61+ fi
0 commit comments