26 个不稳定版本 (8 个破坏性更新)
0.9.0 | 2024年7月24日 |
---|---|
0.8.0 | 2024年2月28日 |
0.7.5 | 2023年12月26日 |
0.7.1 | 2023年11月3日 |
0.3.0 | 2023年7月27日 |
#255 在 命令行工具
每月157 次下载
325KB
4K SLoC
快速入门
$ cargo install buffrs
$ buffrs login
$ buffrs init --api
$ buffrs add <dependency>
$ buffrs install
有用资源
概述
Modern protobuf package management
Usage: buffrs <COMMAND>
Commands:
init Initializes a buffrs setup
new Creates a new buffrs package in the current directory
lint Check rule violations for this package
add Adds dependencies to a manifest file
remove Removes dependencies from a manifest file
package Exports the current package into a distributable tgz archive
publish Packages and uploads this api to the registry
install Installs dependencies
uninstall Uninstalls dependencies
list Lists all protobuf files managed by Buffrs to stdout
login Logs you in for a registry
logout Logs you out from a registry
lock Lockfile related commands
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
-V, --version Print version
动机
协议缓冲区无疑是定义具有强向后兼容性保证的完全类型、语言无关的 API 模式的绝佳方式。它们通过生成的绑定提供了良好的 API 消费者体验。 与协议缓冲区相关联的最大问题是它们的分发。
- 您如何在另一个项目中可靠地消耗一个项目的原始 protobuf 文件?
- 您如何防止传递依赖关系?
- 您如何将具有跨语言包格式的统一注册表中发布?
一种明显的方法是在包含协议缓冲区的存储库中生成代码绑定并发布生成的绑定,但这与语言锁定等问题相关。您需要积极地为 API 消费者可能使用的任何可能的语言发布绑定。此外,由于 孤儿规则,在强类型语言如 Rust 中,在消费项目中扩展生成代码的行为很难。总之:这种方法在某些情况下有效,但经常造成伤害。
这就是 Buffrs 发挥作用的地方:Buffrs 通过定义一个严格的基于包的分发机制并将协议缓冲区视为一等公民来解决此问题。
这允许您将 Buffrs 包发布到注册表并在其他项目中正确地依赖它们。
路线图
- 支持项目清单和依赖声明
- 支持通过 Artifactory 进行包分发
- 支持 tonic 作为代码生成后端
- 支持 protoc 作为代码生成后端
- 实现
buffrs-registry
,一个基于S3的自托管的注册表。 - 提供围绕Protocol Buffers的工具,如bindgen、linting、验证和格式化。
依赖项
约15-30MB
约508K SLoC