Skip to content

Commit

Permalink
Switch protobuf generation to buf cli tool
Browse files Browse the repository at this point in the history
Current generation of protobuf stubs is hard and there's open issues
around it:
   grpc-ecosystem/grpc-gateway#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.
  • Loading branch information
lrascao committed Jul 27, 2021
1 parent 44ae895 commit e6cb710
Show file tree
Hide file tree
Showing 6 changed files with 308 additions and 282 deletions.
33 changes: 22 additions & 11 deletions gctrpc/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,14 @@ 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/protoc-gen-swagger
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 three binaries in your `$GOBIN`;
This will place the following binaries in your `$GOBIN`;

* `protoc-gen-grpc-gateway`
* `protoc-gen-swagger`
Expand All @@ -51,15 +52,25 @@ This will place three binaries in your `$GOBIN`;

Make sure that your `$GOBIN` is in your `$PATH`.

## Usage
### Linux / macOS

After the above dependencies are required, make necessary changes to the `rpc.proto`
spec file and run the generation scripts:
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

Run `gen_pb_win.bat`
After the above dependencies are required, make necessary changes to the `rpc.proto`
spec file and run the generation scripts:

### Linux and macOS
Run `gen_pb_win.bat`

Run `./gen_pb_linux.sh`
17 changes: 17 additions & 0 deletions gctrpc/buf.gen.yaml
Original file line number Diff line number Diff line change
@@ -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 changes: 17 additions & 0 deletions gctrpc/buf.lock
Original file line number Diff line number Diff line change
@@ -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 changes: 5 additions & 0 deletions gctrpc/buf.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
version: v1beta1
name: buf.build/gocryptotrader/grpc
deps:
- buf.build/beta/googleapis
- buf.build/grpc-ecosystem/grpc-gateway
Loading

0 comments on commit e6cb710

Please sign in to comment.