全家桶工具

example

EGO服务端生成PB,生成单元测试例子:

https://github.com/gotomicro/go-engineering/tree/main/chapter\_ego\_unittest

下载工具

使用bash脚本下载工具

  1. bash <(curl -L https://raw.githubusercontent.com/gotomicro/egoctl/main/getlatest.sh)

通过以上脚本,可以下载protoc工具全家桶,以及ego的protoc插件和egoctl

  • /usr/local/bin/protoc
  • /usr/local/bin/protoc-gen-go
  • /usr/local/bin/protoc-gen-go-grpc
  • /usr/local/bin/protoc-gen-openapiv2
  • /usr/local/bin/protoc-gen-go-errors
  • /usr/local/bin/protoc-gen-go-http
  • /usr/local/bin/egoctl

软连接和生成测试代码

  1. PROTO:=protos
  2. PROJECT_NAME=helloworld
  3. # 挂载Proto
  4. link:export PROTO_DIR=../chapter_proto
  5. link:
  6. @echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>make $@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
  7. @ if [[ ! -L $(APP_PATH)/$(PROTO) ]]; then ln -s $(PROTO_DIR) $(APP_PATH)/$(PROTO); echo "link created"; else echo "link exists"; fi;
  8. # 生成pb
  9. gen-proto:
  10. @protoc -I ./$(PROTO) --go_out=paths=source_relative:./$(PROTO) ./$(PROTO)/$(PROJECT_NAME)/*.proto
  11. @protoc -I ./$(PROTO) --go-grpc_out=paths=source_relative:./$(PROTO) ./$(PROTO)/$(PROJECT_NAME)/*.proto
  12. @protoc -I ./$(PROTO) --go-errors_out=paths=source_relative:./$(PROTO) ./$(PROTO)/$(PROJECT_NAME)/*.proto
  13. # 生成单元测试
  14. gen-test:
  15. @protoc -I ./$(PROTO) --go-test_out=out=./server/router,paths=source_relative:. ./$(PROTO)/$(PROJECT_NAME)/*.proto

使用原理

生成PB文件

  1. protoc -I {你的proto路径} --go_out=paths=source_relative:{输出路径} {你的proto来源文件}

生成gRPC文件

  1. protoc -I {你的proto路径} --go-grpc_out=paths=source_relative:{输出路径} {你的proto来源文件}

生成errors文件

  1. protoc -I {你的proto路径} --go-grpc_out=paths=source_relative:{输出路径} {你的proto来源文件}

生成单元测试文件

  1. protoc -I {你的proto路径} --go-test_out=out={输出到指定目录},paths=source_relative:{输出路径} {你的proto来源文件}