50 lines
1.2 KiB
Makefile
50 lines
1.2 KiB
Makefile
export GO111MODULE := on
|
|
export PATH := ./bin:$(PATH)
|
|
|
|
ci: bootstrap lint cover
|
|
.PHONY: ci
|
|
|
|
#################################################
|
|
# Bootstrapping for base golang package and tool deps
|
|
#################################################
|
|
|
|
bootstrap:
|
|
curl -sfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh| sh -s v1.21.0
|
|
.PHONY: bootstrap
|
|
|
|
mod-update:
|
|
go get -u -m
|
|
go mod tidy
|
|
|
|
mod-tidy:
|
|
go mod tidy
|
|
|
|
.PHONY: $(CMD_PKGS)
|
|
.PHONY: mod-update mod-tidy
|
|
|
|
#################################################
|
|
# Test and linting
|
|
#################################################
|
|
# Run all the linters
|
|
lint:
|
|
bin/golangci-lint run ./...
|
|
.PHONY: lint
|
|
|
|
test:
|
|
CGO_ENABLED=0 go test $$(go list ./... | grep -v generated)
|
|
.PHONY: test
|
|
|
|
COVER_TEST_PKGS:=$(shell find . -type f -name '*_test.go' | rev | cut -d "/" -f 2- | rev | grep -v generated | sort -u)
|
|
$(COVER_TEST_PKGS:=-cover): %-cover: all-cover.txt
|
|
@CGO_ENABLED=0 go test -v -coverprofile=$@.out -covermode=atomic ./$*
|
|
@if [ -f $@.out ]; then \
|
|
grep -v "mode: atomic" < $@.out >> all-cover.txt; \
|
|
rm $@.out; \
|
|
fi
|
|
|
|
all-cover.txt:
|
|
echo "mode: atomic" > all-cover.txt
|
|
|
|
cover: all-cover.txt $(COVER_TEST_PKGS:=-cover)
|
|
.PHONY: cover all-cover.txt
|