https://github.com/bitwizeshift/protobuild
https://github.com/bitwizeshift/protobuild
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/bitwizeshift/protobuild
- Owner: bitwizeshift
- License: apache-2.0
- Created: 2024-05-25T17:38:22.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-09-09T19:13:04.000Z (over 1 year ago)
- Last Synced: 2025-02-13T04:54:35.002Z (11 months ago)
- Language: Go
- Size: 136 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE-APACHE
- Code of conduct: .github/CODE_OF_CONDUCT.md
- Security: .github/SECURITY.md
- Support: .github/SUPPORT.md
- Governance: .github/GOVERNANCE.md
Awesome Lists containing this project
README
# 

[][github-releases]
[][gitter-channel]
[][docs]
[][go-docs]
[gitter-channel]: https://matrix.to/#/#protobuild:gitter.im
[docs]: https://bitwizeshift.github.io/protobuild/
[go-docs]: https://bitwizeshift.github.io/protobuild/pkg/github.com/bitwizeshift/protobuild
[github-releases]: https://github.com/bitwizeshift/protobuild/releases
> [!NOTE]
> `protobuild` is a **work-in-progress** tool, so some documentation may be
> out-of-date or may represent the desired future state of the tool until the
> initial `v1.0` release.
Protobuild is the missing coordinator/build-system for [protobuf] projects.
This offers an easy, data-driven build-system for generating protobuf
definitions.
`protobuild` is **free** for teams and companies to use, and always will be.
No subscription is required, like _some other tools_.
> [!IMPORTANT]
> This is not an official supported Google product.
## Teaser
> [!NOTE]
> This section contains output from content that is not yet on `master`.
```bash
$ protobuild generate my-project
target my-project depends on protocolbuffers/protobuf, google/fhir
protocolbuffers/protobuf
go .............................. ✔ (skipped)
go-grpc ......................... ✔ (not-needed)
python .......................... ✔
c++ ............................. ✔ (skipped)
google/fhir
go .............................. ✔ (skipped)
go-grpc ......................... ✔ (not-needed)
python .......................... ✔
c++ ............................. ✔ (skipped)
my-project
go .............................. ✔
go-grpc ......................... ✔
python .......................... ✔
c++ ............................. ✔
Generation successful
```
## Quick Links
* [❓ Why?](#why)
* [🥅 Project Goals](#project-goals)
* [📖 Documentation](https://bitwizeshift.github.io/protobuild)
* [📦 Installation](https://bitwizeshift.github.io/protobuild)
* [🚀 Getting Started](https://bitwizeshift.github.io/protobuild)
* [🙋♂️ Contributing](https://bitwizeshift.github.io/protobuild)
* [⚙️ Go Docs](https://bitwizeshift.github.io/protobuild/pkg/github.com/bitwizeshift/protobuild)
* [⚖️ License](#license)
## Why?
Anyone who has worked in a large project with a lot of protocol buffers knows
what a pain it is to coordinate the generation of protobuf definitions. It
becomes more complicated as more target-languages and plugins get into the mix,
and overall has no _good_ solution to this.
Some products exist in the market, like [`buf`], which privatizes and
centralizes registries behind a **paid subscription**. This forces a separate
and orthogonal system for something that can easily be done locally; and
`protobuild` aims to make this as easily and painlessly as possible.
## Project Goals
The `protobuild` project aims to provide a safe, easy, and **free** mechanism
to control building and generating Protocol buffers.
Below are some goals of this project:
* [ ] Allow user-definitions of external protobuf projects
* [ ] Allow custom `git`-driven registries of public protobuf projects, so that
teams may centralize their definitions.
* [ ] Dependency tracing of protobuf projects.
* [ ] Manage recipes for `protoc` plugin installations to better centralize this.
* [ ] GitHub action support
* [ ] Provide hosted JSON Schema definitions of the project files
## License
This project is **dual-licensed** under both MIT and Apache-2.0, at the
user's choice.
[protobuf]: https://protobuf.dev "Protocol Buffers"
[`buf`]: https://buf.build/ "buf.build"