Skip to content

Commit

Permalink
Switch protobuf generation to buf cli tool (thrasher-corp#720)
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 authored Jul 28, 2021
1 parent 4d9a49e commit a6e158a
Show file tree
Hide file tree
Showing 5 changed files with 60 additions and 11 deletions.
31 changes: 21 additions & 10 deletions gctrpc/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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`;
Expand All @@ -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

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
1 change: 0 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit a6e158a

Please sign in to comment.