#protoc #protobuf #protobuf-compiler #build-script #grpc #tonic #prost

构建 protoc-fetcher

用于构建脚本中获取官方 Protocol Buffer 编译器 (protoc) 版本的发布

2 个版本

0.1.1 2024 年 3 月 19 日
0.1.0 2022 年 8 月 28 日

189构建工具

Download history 30/week @ 2024-04-10 17/week @ 2024-04-17 41/week @ 2024-04-24 13/week @ 2024-05-01 8/week @ 2024-05-08 70/week @ 2024-05-15 106/week @ 2024-05-22 148/week @ 2024-05-29 60/week @ 2024-06-05 56/week @ 2024-06-12 76/week @ 2024-06-19 85/week @ 2024-06-26 43/week @ 2024-07-03 103/week @ 2024-07-10 163/week @ 2024-07-17 78/week @ 2024-07-24

每月 387 次下载
axum-connect-build 中使用

MIT 许可证

9KB
70

protoc-fetcher

Rust 库,用于获取指定版本的官方 Protocol Buffer 编译器 (protoc) 发布版。

protoc-fetcher 下载 protobuf 编译器 (protoc) 的官方 发布版,并返回其路径。

use std::env;
use std::path::Path;

// From within build.rs...
let protoc_version = "21.5";
let out_dir = env::var("OUT_DIR").unwrap();
let protoc_path = protoc_fetcher::protoc(protoc_version, Path::new(&out_dir));

将下载与给定 version 匹配的发布版存档,并将 protoc 二进制文件提取到 out_dir 的子目录中。您可以从 发布页面 选择一个版本,例如 "21.5"。不要以 "v" 开头。

out_dir 可以是任何您想要的位置,但如果从构建脚本调用此函数,您可能需要使用 OUT_DIR 环境变量(Cargo 会自动为构建脚本设置)。

如果已存在于 out_dir 中,则将重用先前下载的与正确版本匹配的 protoc 二进制文件。

与 Tonic 或 Prost 一起使用

如果您正在使用 tonic-build(或 prost-build),则可以通过设置 PROTOC 环境变量来指示它使用获取的 protoc 二进制文件。

use std::env;
use std::path::Path;

let out_dir = env::var("OUT_DIR").unwrap();
let path_to_my_protos = Path::new("a/b/c");
let protoc_path = protoc_fetcher::protoc("21.2", Path::new(&out_dir)).unwrap();
env::set_var("PROTOC", &protoc_path);
tonic_build::compile_protos(path_to_my_protos);

依赖项

~4–19MB
~242K SLoC