.PHONY: all clean clean-coverage install install-dependencies install-tools lint test test-verbose test-with-coverage export ARGS := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS)) export PKG := github.com/sergi/go-diff export ROOT_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) $(eval $(ARGS):;@:) # turn arguments into do-nothing targets export ARGS ifdef ARGS PKG_TEST := $(ARGS) else PKG_TEST := $(PKG)/... endif all: install-tools install-dependencies install lint test clean: go clean -i $(PKG)/... go clean -i -race $(PKG)/... clean-coverage: find $(ROOT_DIR) | grep .coverprofile | xargs rm install: go install -v $(PKG)/... install-dependencies: go get -t -v $(PKG)/... go build -v $(PKG)/... install-tools: # Install linting tools go get -u -v golang.org/x/lint/... go get -u -v github.com/kisielk/errcheck/... # Install code coverage tools go get -u -v github.com/onsi/ginkgo/ginkgo/... go get -u -v github.com/modocache/gover/... go get -u -v github.com/mattn/goveralls/... lint: $(ROOT_DIR)/scripts/lint.sh test: go test -race -test.timeout 120s $(PKG_TEST) test-verbose: go test -race -test.timeout 120s -v $(PKG_TEST) test-with-coverage: ginkgo -r -cover -race -skipPackage="testdata"