-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
67 lines (56 loc) · 1.35 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
64
65
66
67
SHELL := /bin/bash
MODULE := $$(go list -m)
.PHONY: default
default: tidy fmt generate build
.PHONY: upgrade
upgrade:
@go list -m -f '{{if and (not .Main) (not .Indirect)}}{{.Path}}{{end}}' all | xargs go get; \
$(MAKE) tidy
.PHONY: tidy
tidy:
@go mod tidy
.PHONY: fmt
fmt:
@go fmt ./...; \
goimports -w -local $(MODULE) .
.PHONY: generate
generate:
@go generate ./...
.PHONY: lint
lint:
@go vet ./...; \
golangci-lint run ./...; \
govulncheck ./...
.PHONY: test
test:
@go test -v ./...
.PHONY: build
build:
@$(MAKE) binary cmd=build
.PHONY: install
install:
@$(MAKE) binary cmd=install
.PRONY: binary
binary:
@if [[ -z "$${cmd}" ]]; then \
echo "must set cmd env var"; \
exit 1; \
fi; \
if [[ "$${cmd}" != "build" && "$${cmd}" != "install" ]]; then \
echo "unknown cmd '$${cmd}'"; \
exit 1; \
fi; \
if [[ -z "$${version}" ]]; then \
version="$$(git describe --tags --abbrev=0 2>/dev/null | sed 's/^v//')"; \
fi; \
ldflags="-s -w -extldflags='-static'"; \
if [[ -n "$${version}" ]]; then \
ldflags+=" -X '$(MODULE)/pkg/cmd/goserve.version=$${version}'"; \
fi; \
flags=(-trimpath -ldflags="$${ldflags}"); \
if [[ "$${cmd}" == "build" ]]; then \
flags+=(-o "bin/goserve"); \
fi; \
echo "$${cmd}ing goserve@$${version} $$(go env GOOS)/$$(go env GOARCH) cgo=$$(go env CGO_ENABLED)"; \
go mod download; \
go "$${cmd}" "$${flags[@]}" .