GOPATH:=$(shell go env GOPATH) VERSION=$(shell git describe --tags --always) GITHASH=$(shell git rev-parse HEAD 2>/dev/null) BUILDAT=$(shell date +%FT%T%z) INTERNAL_PROTO_FILES=$(shell find internal -name *.proto) API_PROTO_FILES=$(shell find api/* -name *.proto) API_GO_FILES=$(shell find api -name *.go) LDFLAGS="-s -w -X moredoc/cmd.GitHash=${GITHASH} -X moredoc/cmd.BuildAt=${BUILDAT} -X moredoc/cmd.Version=${VERSION}" .PHONY: init # init env init: go install google.golang.org/protobuf/cmd/protoc-gen-go@latest go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest go install github.com/pseudomuto/protoc-gen-doc/cmd/protoc-gen-doc@latest go install github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway@latest go install github.com/gogo/protobuf/protoc-gen-gogofaster@latest go install github.com/google/gnostic/cmd/protoc-gen-openapi@latest .PHONY: api # generate api proto api: protoc --proto_path=. \ --proto_path=./third_party \ --proto_path=./api \ --gogofaster_out="plugins=grpc,paths=source_relative:." \ --grpc-gateway_out="paths=source_relative:." \ $(API_PROTO_FILES) doc: protoc --proto_path=. \ --proto_path=./third_party \ --proto_path=./api \ --doc_out=docs \ --doc_opt=markdown,api.md \ --openapi_out==paths=source_relative:docs \ $(API_PROTO_FILES) .PHONY: clean-api-go # clean api go file clean-api-go: rm -rf api/*/*.go buildlinux: CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -v -o release/${VERSION}/linux/moredoc -ldflags ${LDFLAGS} cp -r dist release/${VERSION}/linux cp -r dict release/${VERSION}/linux cp -r app.example.toml release/${VERSION}/linux buildwin: CGO_ENABLED=1 GOOS=windows GOARCH=amd64 go build -v -o release/${VERSION}/windows/moredoc.exe -ldflags ${LDFLAGS} cp -r dist release/${VERSION}/windows cp -r dict release/${VERSION}/windows cp -r app.example.toml release/${VERSION}/windows # 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 := help