Skip to content

A build helper that integrates buf.build to tonic-build

License

Notifications You must be signed in to change notification settings

Valensas/tonic-buf-build

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tonic-buf-build

A build helper that allows you to integrate buf.build with tonic-build. Using buf.build and tonic, you can easily manage third party dependencies for proto files and generate code for your proto files in Rust. Works with both buf.yaml and buf.work.yaml.

Usage

Add the following to your Cargo.toml:

tonic-buf-build = "*"
tonic-build = "*"

Then, in your build.rs:

fn main() -> Result<(), tonic_buf_build::error::TonicBufBuildError> {
   tonic_buf_build::compile_from_buf(tonic_build::configure(), None)?;
   Ok(())
}

To use buf workspaces, simply call tonic_buf_build::compile_from_buf_workspace instead.

For complete and working examples, take a look at the examples folder.

When the buf files are not located in the current directory, you can configure the absolute path to the directory, containing either buf.yaml or buf.work.yaml, and call the corresponding tonic_buf_build::compile_from_buf_with_config or tonic_buf_build::compile_from_buf_workspace_with_config.

Consider the following build.rs where the buf workspace directory is located one level above the crate (a usual case for multilanguage clients with common protos)

use std::env;
use std::path::PathBuf;

fn main() -> Result<(), tonic_buf_build::error::TonicBufBuildError> {
    let mut path = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap());
    path.pop();
    tonic_buf_build::compile_from_buf_workspace_with_config(
        tonic_build::configure(),
        None,
        tonic_buf_build::TonicBufConfig{buf_dir: Some(path)},
    )?;
    Ok(())
}

About

A build helper that integrates buf.build to tonic-build

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages