Include all generated proto server and client items.
```rust
tonic_include_protos::include_protos!();
```
# Motivation:
I am working on a project with somewhat large grpc base, where we used [tonic]
and google apis. [tonic] uses nice [prost]-based build system, but it generates
a lot of files. Each of them must be included manually in separate `mod` to work
correctly. If you just smash them all in one module, compilation will likely fail.
# How it works:
This macro will construct mod tree based on grpc package names.
For example if you have two generated by [tonic_build] files in [`OUT_DIR`]:
- `package.api.example.rs`
- `package.api.another_example.rs`
The result will be equivalent to this:
```rust
pub mod package{
pub mod api {
pub mod example {
include!(concat!(env!("OUT_DIR"), "/google.api.example.rs"));
}
pub mod another_example {
include!(concat!(env!("OUT_DIR"), "/google.api.another_example.rs"));
}
}
}
```
If [`OUT_DIR`] won't work for you (when you set [tonic_build] to save files
in other directory or for some other reason) you can set `TIP_OUT_DIR` environment variable
to point on the directory you need.
I know this solution is not perfect, but it's getting work done. If you have better ideas on implementation - feel free to open issue or PR.
# License
This project is licensed under the [MIT license](https://opensource.org/licenses/MIT).
[`OUT_DIR`]: https://doc.rust-lang.org/cargo/reference/environment-variables.html#environment-variables-cargo-sets-for-build-scripts#[proc_macro]
[tonic_build]: https://docs.rs/tonic-build
[tonic]: https://docs.rs/tonic
[prost]: https://docs.rs/prost