YouChuKoffee/Makefile

115 lines
3.3 KiB
Makefile
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

GOHOSTOS:=$(shell go env GOHOSTOS)
GOPATH:=$(shell go env GOPATH)
VERSION:=$(shell git describe --tags --always)
PWD:=$(shell pwd)
DOCKER_IMAGE:=youchumilkapi:latest
DOCKER_SERVER:=youchumilkapi
HTTP_PORT:=8083
ifeq ($(GOHOSTOS), windows)
#the `find.exe` is different from `find` in bash/shell.
#to see https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/find.
#changed to use git-bash.exe to run find cli or other cli friendly, caused of every developer has a Git.
#Git_Bash= $(subst cmd\,bin\bash.exe,$(dir $(shell where git)))
Git_Bash=$(subst \,/,$(subst cmd\,bin\bash.exe,$(dir $(shell where git | grep cmd))))
INTERNAL_PROTO_FILES=$(shell $(Git_Bash) -c "find internal -name *.proto")
API_PROTO_FILES=$(shell $(Git_Bash) -c "find api -name *.proto")
else
INTERNAL_PROTO_FILES=$(shell find internal -name *.proto)
API_PROTO_FILES=$(shell find api -name *.proto)
endif
.PHONY: run
# build image and run docker
run:
@echo "Building and running Docker image..."
@docker stop $(DOCKER_SERVER) || true && docker rm $(DOCKER_SERVER) || true
@docker rmi $(DOCKER_IMAGE) || true
@docker build -t $(DOCKER_IMAGE) .
@docker run --privileged -itd \
--name $(DOCKER_SERVER) \
--restart=always \
-p $(HTTP_PORT):$(HTTP_PORT) \
-v $(PWD)/.env:/app/.env \
$(DOCKER_IMAGE)
.PHONY: init
# init env
init:
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install github.com/go-kratos/kratos/cmd/kratos/v2@latest
go install github.com/go-kratos/kratos/cmd/protoc-gen-go-http/v2@latest
go install github.com/google/gnostic/cmd/protoc-gen-openapi@latest
go install github.com/google/wire/cmd/wire@latest
.PHONY: config
# generate internal proto
config:
protoc --proto_path=./internal \
--proto_path=./third_party \
--go_out=paths=source_relative:./internal \
$(INTERNAL_PROTO_FILES)
.PHONY: api
# generate api proto
api:
protoc --proto_path=./api \
--proto_path=./third_party \
--go_out=paths=source_relative:./api \
--go-http_out=paths=source_relative:./api \
--validate_out=paths=source_relative,lang=go:./api \
--go-errors_out=paths=source_relative:./api \
--openapi_out=fq_schema_naming=true,default_response=false:./third_party/swagger_ui \
$(API_PROTO_FILES)
.PHONY: wire
# generate wire
wire:
cd ./cmd/server && wire
.PHONY: build
# build
build:
make all
mkdir -p bin/ && CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-X main.Version=$(VERSION)" -o ./bin/ ./...
.PHONY: generate
# generate
generate:
go get github.com/google/wire/cmd/wire@latest
go generate ./...
go mod tidy
.PHONY: all
# generate all
all:
make api;
make config;
make wire;
make generate;
# 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)
.PHONY: ent
ent:
@echo '生成 ent 模型命令格式make ent t=表名,当前生成中...'
sh ./sync_table_entgo.sh $(t)
.DEFAULT_GOAL := help