zoom-lib-golang/zoom-lib-golang

View on GitHub
fmtpolice

Summary

Maintainability
Test Coverage
#!/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 "$@"