-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
63 lines (46 loc) · 1.88 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
ROOT_DIR:=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
REPO_NAME := go-helper
GO_VERSION ?= 1.20.8
GO_IMAGE ?= golang:$(GO_VERSION)
DOCKER_NAMESPACE ?= arangodb
SOURCES := $(shell find $(ROOT_DIR) -name '*.go')
TEST_IMAGE_NAME ?= $(DOCKER_NAMESPACE)/$(REPO_NAME)
TEST_IMAGE_TAG ?= latest
TEST_IMAGE ?= $(TEST_IMAGE_NAME):$(TEST_IMAGE_TAG)
run-unit-tests:
go test $(TEST_OPTIONS) ./pkg/...
run-unit-tests-in-docker:
ifeq ("$(TEST_DEBUG)", "true")
docker build --build-arg GO_VERSION=$(GO_VERSION) --build-arg TEST_DEBUG_PACKAGE=${TEST_DEBUG_PACKAGE} -f Dockerfile.unittest.debug -t $(TEST_IMAGE) .
docker run -p 2345:2345 --cap-add=SYS_PTRACE --security-opt=seccomp:unconfined "${TEST_IMAGE}" ${TEST_OPTIONS}
else
docker run --rm -v "${ROOT_DIR}":/usr/code -e CGO_ENABLED=0 -w /usr/code/ $(GO_IMAGE) go test $(TEST_OPTIONS) ./pkg/...
endif
.PHONY: tools
tools:
@-mkdir -p bin
@echo ">> Fetching golangci-lint linter"
@GOBIN=$(ROOT_DIR)/bin go install github.com/golangci/golangci-lint/cmd/[email protected]
@echo ">> Fetching goimports"
@GOBIN=$(ROOT_DIR)/bin go install golang.org/x/tools/cmd/[email protected]
@echo ">> Fetching license check"
@GOBIN=$(ROOT_DIR)/bin go install github.com/google/[email protected]
@echo ">> Fetching govulncheck"
@GOBIN=$(ROOT_DIR)/bin go install golang.org/x/vuln/cmd/[email protected]
.PHONY: linter
linter:
@GO111MODULE=off $(ROOT_DIR)/bin/golangci-lint run ./...
.PHONY: fmt
fmt:
@echo ">> Verify files style"
@if [ X"$$($(ROOT_DIR)/bin/goimports -l $(SOURCES) | wc -l)" != X"0" ]; then echo ">> Style errors"; $(ROOT_DIR)/bin/goimports -l $(SOURCES); exit 1; fi
.PHONY: license
license:
@echo ">> Verify license of files"
@$(ROOT_DIR)/bin/addlicense -f "$(ROOT_DIR)/HEADER" -check $(SOURCES)
.PHONY: vulncheck
vulncheck:
$(ROOT_DIR)/bin/govulncheck ./...
.PHONY: check
check: fmt license linter vulncheck
echo "Verify project"