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命令行工具

Download history 103/week @ 2024-05-04 20/week @ 2024-05-11 34/week @ 2024-05-18 59/week @ 2024-05-25 69/week @ 2024-06-01 224/week @ 2024-06-08 55/week @ 2024-06-15 141/week @ 2024-06-22 36/week @ 2024-06-29 43/week @ 2024-07-06 1/week @ 2024-07-13 104/week @ 2024-07-20 36/week @ 2024-07-27 50/week @ 2024-08-03 5/week @ 2024-08-10 56/week @ 2024-08-17

每月157 次下载

Apache-2.0

325KB
4K SLoC


Buffrs

现代 protobuf 包管理

Helsing Buffrs Crate Buffrs Book Buffrs Docs Nix Flake

快速入门

$ 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