@@ -3,12 +3,12 @@ ifneq ("1.17","$(shell printf "$(GO_VERSION_SHORT)\n1.17" | sort -V | head -1)")
33$(error NEED GO VERSION >= 1.17. Found : $(GO_VERSION_SHORT ) )
44endif
55
6- export GO111MODULE =on
7-
86# ##############################################################################
97
108SERVICE_NAME =reddit-feed-api
119SERVICE_PATH =github.com/arttet/reddit-feed-api
10+ SERVICE_MAIN =cmd/$(SERVICE_NAME ) /main.go
11+ SERVICE_EXE =./bin/$(SERVICE_NAME )$(shell go env GOEXE)
1212
1313# ##############################################################################
1414
@@ -23,29 +23,32 @@ ifeq ("NT", "$(findstring NT,$(OS_NAME))")
2323OS_NAME =Windows
2424endif
2525
26- ifeq ("Windows", "$(OS_NAME ) ")
27- OS_ARCH: =$(addsuffix .exe,$(OS_ARCH ) )
28- endif
29-
3026# ##############################################################################
3127
3228.PHONY : build
3329build : generate .build
34- ifeq ("NT", "$(findstring NT,$(shell uname -s) ) ")
35- mv ./bin/$(SERVICE_NAME) ./bin/$(SERVICE_NAME).exe
36- endif
3730
3831.PHONY : run
3932run :
40- go run cmd/reddit-feed-api/main.go
33+ go run \
34+ -gcflags=' -m' \
35+ -gcflags=' $(SERVICE_PATH)/internal/api=-m' \
36+ -gcflags=' $(SERVICE_PATH)/internal/server=-m' \
37+ $(SERVICE_MAIN ) --cfg config-dev.yml
4138
4239.PHONY : test
4340test :
4441 go test -v -timeout 30s -coverprofile cover.out ./...
4542 go tool cover -func cover.out | grep total | awk ' {print ($$3)}'
4643
44+ .PHONY : bench
45+ bench :
46+ go test -cpuprofile cpu.prof -memprofile mem.prof -bench ./...
47+
4748.PHONY : lint
4849lint :
50+ @command -v golangci-lint 2>&1 > /dev/null || (echo " Install golangci-lint" && \
51+ curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b " $( shell go env GOPATH) /bin" v1.42.1)
4952 golangci-lint run ./...
5053
5154.PHONY : tidy
@@ -61,6 +64,10 @@ style:
6164cover :
6265 go tool cover -html cover.out
6366
67+ # Enable pprof: internal/server/status.go:13
68+ .PHONY : pprof
69+ pprof : .pprof-cpu
70+
6471.PHONY : grpcui
6572grpcui :
6673 grpcui -plaintext 0.0.0.0:8082
@@ -71,6 +78,8 @@ grpcui:
7178deps : .deps
7279
7380.deps :
81+ go env -w GO111MODULE=on
82+
7483 @ # https://pkg.go.dev/google.golang.org/protobuf/cmd/protoc-gen-go
7584 go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
7685
@@ -93,7 +102,7 @@ generate: .generate
93102.generate :
94103 @command -v buf 2>&1 > /dev/null || (echo " Install buf" && \
95104 mkdir -p " $( GOBIN) " && \
96- curl -k -sSL0 https://github.com/bufbuild/buf/releases/download/$(BUF_VERSION ) /buf-$(OS_NAME ) -$(OS_ARCH ) -o " $( GOBIN) /buf" && \
105+ curl -k -sSL0 https://github.com/bufbuild/buf/releases/download/$(BUF_VERSION ) /buf-$(OS_NAME ) -$(OS_ARCH )$( shell go env GOEXE) -o " $( GOBIN) /buf" && \
97106 chmod +x " $( GOBIN) /buf" )
98107 @PATH=" $( GOBIN) :$( PATH) " buf generate
99108
@@ -111,4 +120,14 @@ generate: .generate
111120 -X ' $(SERVICE_PATH)/internal/config.version=$(VERSION)' \
112121 -X ' $(SERVICE_PATH)/internal/config.commitHash=$(COMMIT_HASH)' \
113122 " \
114- -o ./bin/reddit-feed-api ./cmd/reddit-feed-api/main.go
123+ -o $(SERVICE_EXE ) $(SERVICE_MAIN )
124+
125+ # ##############################################################################
126+
127+ .pprof-cpu :
128+ go tool pprof http://localhost:8000/debug/pprof/profile? seconds=30
129+
130+ .pprof-mem :
131+ go tool pprof -alloc_space http://localhost:8000/debug/pprof/heap
132+
133+ # ##############################################################################
0 commit comments