#!/bin/bash
source "$(dirname "${BASH_SOURCE}")/lib/init.sh"

os::golang::verify_go_version
os::util::ensure::system_binary_exists 'golint'

arg="${1:-""}"
bad_files=""

if [ "$arg" == "-m" ]; then
	head=$(git rev-parse --short HEAD | xargs echo -n)
	set +e
	modified_files=$(git diff-tree --no-commit-id --name-only -r master..$head | \
		grep "^pkg" | grep ".go$" | grep -v "bindata.go$" | grep -v "Godeps" | \
		grep -v "third_party")
	if [ -n "${modified_files}" ]; then
		echo -e "Checking modified files: ${modified_files}\n"
		for f in $modified_files; do golint $f; done
		echo
	fi
	set -e
else
	bad_files=$(find_files | \
		sort -u | \
		sed 's/^.{2}//' | \
		xargs -n1 printf "${GOPATH}/src/${OS_GO_PACKAGE}/%s\n" | \
		xargs -n1 golint)
fi

if [[ -n "${bad_files}" ]]; then
	echo "golint detected following problems:"
	echo "${bad_files}"
	exit 1
fi