diff --git a/.travis.yml b/.travis.yml index bb84b59..54c7d98 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,4 +10,5 @@ matrix: - go: tip script: - - ./ci.sh + # TODO: change to "make" when golint, errcheck, staticcheck pass + - make deps checkgofmt vet unused test diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..48f25fc --- /dev/null +++ b/Makefile @@ -0,0 +1,64 @@ +SRCS := $(shell find . -name '*.go') +PKGS := $(shell go list ./...) + +.PHONY: all +all: deps lint test + +.PHONY: deps +deps: + go get -d -v -t $(PKGS) + +.PHONY: updatedeps +updatedeps: + go get -d -v -t -u -f $(PKGS) + +.PHONY: install +install: + go install $(PKGS) + +.PHONY: golint +golint: + @go get github.com/golang/lint/golint + for file in $(SRCS); do \ + golint $${file}; \ + if [ -n "$$(golint $${file})" ]; then \ + exit 1; \ + fi; \ + done + +.PHONY: checkgofmt +checkgofmt: + gofmt -s -l $(SRCS) + if [ -n "$$(gofmt -s -l $(SRCS))" ]; then \ + exit 1; \ + fi + +.PHONY: vet +vet: + go vet $(PKGS) + +.PHONY: +errcheck: + @go get github.com/kisielk/errcheck + errcheck $(PKGS) + +.PHONY: staticcheck +staticcheck: + @go get honnef.co/go/tools/cmd/staticcheck + staticcheck $(PKGS) + +.PHONY: unused +unused: + @go get honnef.co/go/tools/cmd/unused + unused $(PKGS) + +.PHONY: lint +lint: golint checkgofmt vet errcheck staticcheck unused + +.PHONY: test +test: + go test -race $(PKGS) + +.PHONY: clean +clean: + go clean -i $(PKGS) diff --git a/ci.sh b/ci.sh deleted file mode 100755 index 029179a..0000000 --- a/ci.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env bash -set -e - -fmtdiff="$(gofmt -s -l ./)" -if [[ -n "$fmtdiff" ]]; then - gofmt -s -l ./ >&2 - echo "Run gofmt on the above files!" >&2 - exit 1 -fi - -go test -v -race ./...