mirror of
https://github.com/zhufuyi/sponge.git
synced 2024-05-03 09:44:53 +08:00
139 lines
3.0 KiB
Makefile
139 lines
3.0 KiB
Makefile
SHELL := /bin/bash
|
||
|
||
PROJECT_NAME := "github.com/zhufuyi/sponge"
|
||
PKG := "$(PROJECT_NAME)"
|
||
PKG_LIST := $(shell go list ${PKG}/... | grep -v /vendor/)
|
||
GO_FILES := $(shell find . -name '*.go' | grep -v /vendor/ | grep -v _test.go)
|
||
|
||
|
||
.PHONY: init
|
||
# init env
|
||
init:
|
||
go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28.0
|
||
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2.0
|
||
go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@v2.10.0
|
||
go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2@v2.10.0
|
||
go install github.com/envoyproxy/protoc-gen-validate@v0.6.7
|
||
go install github.com/mohuishou/protoc-gen-go-gin@v0.1.0
|
||
go install github.com/srikrsna/protoc-gen-gotag@v0.6.2
|
||
go install github.com/pseudomuto/protoc-gen-doc/cmd/protoc-gen-doc@v1.5.1
|
||
go install github.com/golang/mock/mockgen@v1.6.0
|
||
go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.49.0
|
||
go install github.com/swaggo/swag/cmd/swag@v1.8.6
|
||
go install github.com/ofabry/go-callvis@v0.6.1
|
||
|
||
|
||
.PHONY: ci-lint
|
||
# make ci-lint
|
||
ci-lint:
|
||
golangci-lint run ./...
|
||
|
||
|
||
.PHONY: build
|
||
# make build, Build the binary file
|
||
build:
|
||
@cd cmd/sponge && go build
|
||
@echo "build finished, binary file in path 'cmd/sponge'"
|
||
|
||
|
||
.PHONY: run
|
||
# make run, run app
|
||
run:
|
||
@bash scripts/run.sh
|
||
|
||
|
||
.PHONY: dep
|
||
# make dep Get the dependencies
|
||
dep:
|
||
@go mod download
|
||
|
||
|
||
.PHONY: fmt
|
||
# make fmt
|
||
fmt:
|
||
@gofmt -s -w .
|
||
|
||
|
||
.PHONY: test
|
||
# make test
|
||
test:
|
||
go test -short ${PKG_LIST}
|
||
|
||
|
||
.PHONY: cover
|
||
# make cover
|
||
cover:
|
||
go test -short -coverprofile coverage.out -covermode=atomic ${PKG_LIST}
|
||
go tool cover -html=coverage.out
|
||
|
||
|
||
.PHONY: docker
|
||
# generate docker image
|
||
docker:
|
||
docker build -t sponge:latest -f build/Dockerfile
|
||
|
||
|
||
.PHONY: clean
|
||
# make clean
|
||
clean:
|
||
@-rm -vrf sponge
|
||
@-rm -vrf cover.out
|
||
@-rm -vrf coverage.txt
|
||
@go mod tidy
|
||
@echo "clean finished"
|
||
|
||
|
||
.PHONY: docs
|
||
# gen swagger doc
|
||
docs:
|
||
@swag init -g cmd/sponge/main.go
|
||
@echo "see docs by: http://localhost:8080/swagger/index.html"
|
||
|
||
|
||
.PHONY: graph
|
||
# make graph 生成交互式的可视化Go程序调用图,生成完毕后会在浏览器自动打开
|
||
graph:
|
||
@echo "generating graph ......"
|
||
@go-callvis github.com/zhufuyi/sponge
|
||
|
||
|
||
.PHONY: mockgen
|
||
# make mockgen gen mock file
|
||
mockgen:
|
||
cd ./internal && for file in `egrep -rnl "type.*?interface" ./repository | grep -v "_test" `; do \
|
||
echo $$file ; \
|
||
cd .. && mockgen -destination="./internal/mock/$$file" -source="./internal/$$file" && cd ./internal ; \
|
||
done
|
||
|
||
|
||
.PHONY: proto
|
||
# generate proto struct only
|
||
proto:
|
||
@bash scripts/protoc.sh
|
||
|
||
|
||
.PHONY: proto-doc
|
||
# generate proto doc
|
||
proto-doc:
|
||
@bash scripts/proto-doc.sh
|
||
|
||
|
||
# show help
|
||
help:
|
||
@echo ''
|
||
@echo 'Usage:'
|
||
@echo ' make [target]'
|
||
@echo ''
|
||
@echo 'Targets:'
|
||
@awk '/^[a-zA-Z\-\_0-9]+:/ { \
|
||
helpMessage = match(lastLine, /^# (.*)/); \
|
||
if (helpMessage) { \
|
||
helpCommand = substr($$1, 0, index($$1, ":")-1); \
|
||
helpMessage = substr(lastLine, RSTART + 2, RLENGTH); \
|
||
printf "\033[36m %-22s\033[0m %s\n", helpCommand,helpMessage; \
|
||
} \
|
||
} \
|
||
{ lastLine = $$0 }' $(MAKEFILE_LIST)
|
||
|
||
.DEFAULT_GOAL := all
|