d77176912b
* Migrate to go modules * make vendor * Update mvdan.cc/xurls * make vendor * Update code.gitea.io/git * make fmt-check * Update github.com/go-sql-driver/mysql * make vendor
82 lines
1.8 KiB
Makefile
82 lines
1.8 KiB
Makefile
.PHONY: default install build test quicktest fmt vet lint
|
|
|
|
# List of all release tags "supported" by our current Go version
|
|
# E.g. ":go1.1:go1.2:go1.3:go1.4:go1.5:go1.6:go1.7:go1.8:go1.9:go1.10:go1.11:go1.12:"
|
|
GO_RELEASE_TAGS := $(shell go list -f ':{{join (context.ReleaseTags) ":"}}:' runtime)
|
|
|
|
# Only use the `-race` flag on newer versions of Go (version 1.3 and newer)
|
|
ifeq (,$(findstring :go1.3:,$(GO_RELEASE_TAGS)))
|
|
RACE_FLAG :=
|
|
else
|
|
RACE_FLAG := -race -cpu 1,2,4
|
|
endif
|
|
|
|
# Run `go vet` on Go 1.12 and newer. For Go 1.5-1.11, use `go tool vet`
|
|
ifneq (,$(findstring :go1.12:,$(GO_RELEASE_TAGS)))
|
|
GO_VET := go vet \
|
|
-atomic \
|
|
-bool \
|
|
-copylocks \
|
|
-nilfunc \
|
|
-printf \
|
|
-rangeloops \
|
|
-unreachable \
|
|
-unsafeptr \
|
|
-unusedresult \
|
|
.
|
|
else ifneq (,$(findstring :go1.5:,$(GO_RELEASE_TAGS)))
|
|
GO_VET := go tool vet \
|
|
-atomic \
|
|
-bool \
|
|
-copylocks \
|
|
-nilfunc \
|
|
-printf \
|
|
-shadow \
|
|
-rangeloops \
|
|
-unreachable \
|
|
-unsafeptr \
|
|
-unusedresult \
|
|
.
|
|
else
|
|
GO_VET := @echo "go vet skipped -- not supported on this version of Go"
|
|
endif
|
|
|
|
default: fmt vet lint build quicktest
|
|
|
|
install:
|
|
go get -t -v ./...
|
|
|
|
build:
|
|
go build -v ./...
|
|
|
|
test:
|
|
go test -v $(RACE_FLAG) -cover ./...
|
|
|
|
quicktest:
|
|
go test ./...
|
|
|
|
# Capture output and force failure when there is non-empty output
|
|
fmt:
|
|
@echo gofmt -l .
|
|
@OUTPUT=`gofmt -l . 2>&1`; \
|
|
if [ "$$OUTPUT" ]; then \
|
|
echo "gofmt must be run on the following files:"; \
|
|
echo "$$OUTPUT"; \
|
|
exit 1; \
|
|
fi
|
|
|
|
vet:
|
|
$(GO_VET)
|
|
|
|
# https://github.com/golang/lint
|
|
# go get github.com/golang/lint/golint
|
|
# Capture output and force failure when there is non-empty output
|
|
# Only run on go1.5+
|
|
lint:
|
|
@echo golint ./...
|
|
@OUTPUT=`command -v golint >/dev/null 2>&1 && golint ./... 2>&1`; \
|
|
if [ "$$OUTPUT" ]; then \
|
|
echo "golint errors:"; \
|
|
echo "$$OUTPUT"; \
|
|
exit 1; \
|
|
fi
|