-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
89 lines (69 loc) Β· 2.48 KB
/
Copy pathMakefile
File metadata and controls
89 lines (69 loc) Β· 2.48 KB
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
PROJECT_DIR := $(patsubst %/,%,$(dir $(realpath $(lastword $(MAKEFILE_LIST)))))
BIN_DIR := $(PROJECT_DIR)/bin
export PATH := $(BIN_DIR):$(PATH)
export GOBIN := $(BIN_DIR)
GOLANGCI_LINT := $(BIN_DIR)/golangci-lint
MINIMOCK := $(BIN_DIR)/minimock
GO_COVER_TREEMAP := $(BIN_DIR)/go-cover-treemap
LIVE2TEXT_APP := $(PROJECT_DIR)/cmd/live2text/main.go
GOLANGCI_CONFIG := $(PROJECT_DIR)/.golangci.yml
GOLANGCI_LINT_VERSION := v2.10.1
MINIMOCK_VERSION := v3.4.5
GO_COVER_TREEMAP_VERSION := v1.5.0
.PHONY: all
all: install build
$(BIN_DIR):
mkdir -p $(BIN_DIR)
$(GOLANGCI_LINT): | $(BIN_DIR)
go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@$(GOLANGCI_LINT_VERSION)
$(MINIMOCK): | $(BIN_DIR)
go install github.com/gojuno/minimock/v3/cmd/minimock@$(MINIMOCK_VERSION)
$(GO_COVER_TREEMAP): | $(BIN_DIR)
go install github.com/nikolaydubina/go-cover-treemap@$(GO_COVER_TREEMAP_VERSION)
.PHONY: install
install: check-portaudio $(GOLANGCI_LINT) $(MINIMOCK)
.PHONY: build
build:
go build -trimpath -ldflags "-s -w" -o $(BIN_DIR)/live2text $(LIVE2TEXT_APP)
.PHONY: generate
generate: generate-mocks
.PHONY: generate-mocks
generate-mocks: $(MINIMOCK)
find ./internal/ -iname '*_mock.go' -delete
@echo "Using minimock from: $(MINIMOCK)"
go generate --run "minimock" ./...
.PHONY: lint
lint: $(GOLANGCI_LINT)
@echo "Using golangci-lint from: $(GOLANGCI_LINT)"
$(GOLANGCI_LINT) run --config "$(GOLANGCI_CONFIG)" ./...
.PHONY: lint-fix
lint-fix: $(GOLANGCI_LINT)
@echo "Using golangci-lint from: $(GOLANGCI_LINT)"
$(GOLANGCI_LINT) run --config "$(GOLANGCI_CONFIG)" ./... --fix
.PHONY: format
format: $(GOLANGCI_LINT)
@echo "Using golangci-lint from: $(GOLANGCI_LINT)"
$(GOLANGCI_LINT) fmt --config "$(GOLANGCI_CONFIG)" ./...
.PHONY: test
test:
go test ./... -v
.PHONY: test-race
test-race:
go test -race ./... -v
.PHONY: clean
clean:
rm -rf $(BIN_DIR)
.PHONY: check-portaudio
check-portaudio:
@if test $$(uname) == "Darwin" && ! pkg-config -exists portaudio-2.0; then \
echo "PortAudio not found via pkg-config."; \
echo "Please install it: brew install portaudio"; \
fi
.PHONY: show-coverage
show-coverage:
$(eval TMP_DIR := $(shell mktemp -d))
go test -coverprofile $(TMP_DIR)/coverage.out ./...
grep -vE '_(mock|string)\.go' $(TMP_DIR)/coverage.out > $(TMP_DIR)/filtered.out
@echo "Using go-cover-treemap from: $(GO_COVER_TREEMAP)"
$(GO_COVER_TREEMAP) -percent -h 1280 -w 2048 -coverprofile $(TMP_DIR)/filtered.out > $(TMP_DIR)/filtered.svg
@echo "Check out the $(TMP_DIR)/filtered.svg file"