Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/aperturerobotics/protobuf-project
Protobuf with Go import paths for Go and TypeScript: project boilerplate w/ Makefile. Supports grpc, vtprotobuf, drpc, ts-proto, twirp, starpc.
https://github.com/aperturerobotics/protobuf-project
drpc go protobuf typescript
Last synced: 28 days ago
JSON representation
Protobuf with Go import paths for Go and TypeScript: project boilerplate w/ Makefile. Supports grpc, vtprotobuf, drpc, ts-proto, twirp, starpc.
- Host: GitHub
- URL: https://github.com/aperturerobotics/protobuf-project
- Owner: aperturerobotics
- License: mit
- Created: 2019-09-09T22:04:03.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-10-29T09:37:04.000Z (about 1 month ago)
- Last Synced: 2024-10-29T11:44:46.727Z (about 1 month ago)
- Topics: drpc, go, protobuf, typescript
- Language: TypeScript
- Homepage:
- Size: 661 KB
- Stars: 20
- Watchers: 2
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-golang-repositories - protobuf-project - proto, twirp, starpc. (Repositories)
README
## protobuf-project template
This template uses [protobuf-go-lite] to generate reflection-free Go code and [protobuf-es-lite] for TypeScript interfaces.
[protobuf-go-lite]: https://github.com/aperturerobotics/protobuf-go-lite
[protobuf-es-lite]: https://github.com/aperturerobotics/protobuf-es-liteUses a Makefile to download tools to ./hack/bin.
Includes targets for linting, checking outdated modules, etc.
You can create a new repository with this template [on GitHub].
[on GitHub]: https://github.com/aperturerobotics/protobuf-project
Also check out the managed template at [template].
[template]: https://github.com/aperturerobotics/template
## Usage
Protobuf imports use Go paths and package names:
```protobuf
syntax = "proto3";
package example;// Import .proto files using Go-style import paths.
import "github.com/aperturerobotics/controllerbus/controller/controller.proto";// GetBusInfoResponse is the response type for GetBusInfo.
message GetBusInfoResponse {
// RunningControllers is the list of running controllers.
repeated controller.Info running_controllers = 1;
}
```To generate the protobuf files:
```bash
$ git add -A
$ yarn install
$ yarn gen
```The Makefile will download the tools using Go to a bin dir.
## Makefile
The available make targets are:
- `genproto`: Generate protobuf files.
- `test`: run go test -v ./...
- `lint`: run golangci-lint on the project.
- `fix`: run golangci-lint --fix on the project.
- `list`: list go module dependencies
- `outdated`: list outdated go module dependenciesTo generate the TypeScript and Go code:
- `yarn install`
- `yarn gen`## Branches
Other available branches:
- **norpc**: does not have any RPC library.
- **drpc**: uses the [dRPC] rpc library instead of [starpc].
- **grpc**: uses the [gRPC] rpc library instead of [starpc].
- **starpc**: uses the [starpc] rpc library (same as main).
- **twirp**: uses the [Twirp] rpc library instead of [starpc].[dRPC]: https://github.com/storj/drpc
[gRPC]: https://github.com/grpc/grpc
[starpc]: https://github.com/aperturerobotics/starpc
[Twirp]: https://github.com/twitchtv/twirp## Demo
**This branch implements a starpc service and demo.**
To run the demo: **yarn** then **yarn run demo**.
## Developing on MacOS
On MacOS, some homebrew packages are required for `yarn gen`:
```
brew install bash make coreutils gnu-sed findutils protobuf
brew link --overwrite protobuf
```Add to your .bashrc or .zshrc:
```
export PATH="/opt/homebrew/opt/coreutils/libexec/gnubin:$PATH"
export PATH="/opt/homebrew/opt/gnu-sed/libexec/gnubin:$PATH"
export PATH="/opt/homebrew/opt/findutils/libexec/gnubin:$PATH"
export PATH="/opt/homebrew/opt/make/libexec/gnubin:$PATH"
```## Support
Please open a [GitHub issue] with any questions / issues.
[GitHub issue]: https://github.com/aperturerobotics/protobuf-project/issues/new
... or feel free to reach out on [Matrix Chat] or [Discord].
[Discord]: https://discord.gg/KJutMESRsT
[Matrix Chat]: https://matrix.to/#/#aperturerobotics:matrix.org## License
MIT