Switch protobuf generation to buf cli tool (#720)

Current generation of protobuf stubs is hard and there's open issues
around it:
   https://github.com/grpc-ecosystem/grpc-gateway/issues/1065

grpc-gateway author and README suggest to use `buf` instead which
intends to be a simpler and more reliable method of protobuf stub
generation.
This commit is contained in:
Luis Rascão
2021-07-28 01:34:46 +01:00
committed by GitHub
parent 4d9a49e7f7
commit a6e158ab0c
5 changed files with 60 additions and 11 deletions

View File

@@ -36,10 +36,11 @@ manager or by downloading one of the releases from the official repository:
Then use `go get` to download the following packages:
```bash
go get github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway
go get github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2
go get google.golang.org/protobuf/cmd/protoc-gen-go
go get google.golang.org/grpc/cmd/protoc-gen-go-grpc
go get \
github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway \
github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2 \
google.golang.org/protobuf/cmd/protoc-gen-go \
google.golang.org/grpc/cmd/protoc-gen-go-grpc
```
This will place the following binaries in your `$GOBIN`;
@@ -51,15 +52,25 @@ This will place the following binaries in your `$GOBIN`;
Make sure that your `$GOBIN` is in your `$PATH`.
## Usage
### Linux / macOS
GoCryptoTrader requires a local installation of the `buf` cli tool that tries to make Protobuf handling more easier and reliable,
after [installation](https://docs.buf.build/installation) you'll need to run:
```shell
buf beta mod update
```
After previous command, make necessary changes to the `rpc.proto` spec file and run the generation command:
```shell
buf generate
```
### Windows
After the above dependencies are required, make necessary changes to the `rpc.proto`
spec file and run the generation scripts:
### Windows
Run `gen_pb_win.bat`
### Linux and macOS
Run `./gen_pb_linux.sh`

17
gctrpc/buf.gen.yaml Normal file
View File

@@ -0,0 +1,17 @@
version: v1beta1
plugins:
- name: go
out: ./
opt:
- paths=source_relative
- name: go-grpc
out: ./
opt:
- paths=source_relative
- name: grpc-gateway
out: ./
opt:
- paths=source_relative
- generate_unbound_methods=true
- name: openapiv2
out: ./

17
gctrpc/buf.lock Normal file
View File

@@ -0,0 +1,17 @@
# Generated by buf. DO NOT EDIT.
version: v1
deps:
- remote: buf.build
owner: beta
repository: googleapis
branch: main
commit: 1c473ad9220a49bca9320f4cc690eba5
digest: b1-unlhrcI3tnJd0JEGuOb692LZ_tY_gCGq6mK1bgCn1Pg=
create_time: 2021-06-23T20:16:47.788079Z
- remote: buf.build
owner: grpc-ecosystem
repository: grpc-gateway
branch: main
commit: d19475fa22444a289c46af009acce62c
digest: b1-_zhDPyr_Ctc1QRAKuad6_0xvoyPd6QaB22ldm9gzS0Q=
create_time: 2021-04-26T15:19:26.742789Z

5
gctrpc/buf.yaml Normal file
View File

@@ -0,0 +1,5 @@
version: v1beta1
name: buf.build/gocryptotrader/grpc
deps:
- buf.build/beta/googleapis
- buf.build/grpc-ecosystem/grpc-gateway

1
go.mod
View File

@@ -7,7 +7,6 @@ require (
github.com/d5/tengo/v2 v2.8.0
github.com/friendsofgo/errors v0.9.2 // indirect
github.com/gofrs/uuid v4.0.0+incompatible
github.com/golang/protobuf v1.5.2
github.com/google/go-querystring v1.1.0
github.com/gorilla/mux v1.8.0
github.com/gorilla/websocket v1.4.2