Платформа ЦРНП "Мирокод" для разработки проектов
https://git.mirocod.ru
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
1.8 KiB
82 lines
1.8 KiB
.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
|
|
|