fmtpolice
#!/bin/bash
# See https://github.com/rafecolton/fmtpolice
set -e
readonly GOPATH="${GOPATH%%:*}"
main() {
check_fmt
check_lint
}
__gofiles() {
find . -name '*.go' | grep -vE '^./vendor/|^./Godeps/_workspace/'
}
check_fmt() {
for file in $(__gofiles) ; do
echo "checking gofmt for $file"
gofmt $file | diff -u $file -
done
}
check_lint() {
_install_linter
for file in $(__gofiles) ; do
echo "linting $file"
if [[ ! "$(${GOPATH}/bin/golint $file)" =~ ^[[:blank:]]*$ ]] ; then
_lint_verbose && exit 1
fi
done
}
_lint_verbose() {
for file in $(__gofiles) ; do $GOPATH/bin/golint $file ; done
}
_install_linter() {
if [[ ! -x "${GOPATH}/bin/golint" ]] ; then
GO111MODULE=off go get -u golang.org/x/lint/golint
fi
}
main "$@"