bazel_remote_apis/
lib.rs

1//! `bazel-remote-apis` provides client and service stubs
2//! and protobuf types for
3//! [Bazel Remote APIs](https://github.com/bazelbuild/remote-apis) definitions, so one can implement it with `tonic`.
4//!
5//! # Feature flags
6//!
7//! - `serde`: Adds implementation of `serde::Serialize` and `serde::Deserialize` traits for protobuf types.
8//!
9
10#[cfg(not(doctest))]
11pub mod build {
12    pub mod bazel {
13        pub mod remote {
14            pub mod execution {
15                pub mod v2 {
16                    include!("generated/build.bazel.remote.execution.v2.rs");
17                    #[cfg(feature = "serde")]
18                    include!("generated/build.bazel.remote.execution.v2.serde.rs");
19                }
20            }
21            pub mod asset {
22                pub mod v1 {
23                    include!("generated/build.bazel.remote.asset.v1.rs");
24                    #[cfg(feature = "serde")]
25                    include!("generated/build.bazel.remote.asset.v1.serde.rs");
26                }
27            }
28            pub mod logstream {
29                pub mod v1 {
30                    include!("generated/build.bazel.remote.logstream.v1.rs");
31                    #[cfg(feature = "serde")]
32                    include!("generated/build.bazel.remote.logstream.v1.serde.rs");
33                }
34            }
35        }
36        pub mod semver {
37            include!("generated/build.bazel.semver.rs");
38            #[cfg(feature = "serde")]
39            include!("generated/build.bazel.semver.serde.rs");
40        }
41    }
42}
43
44#[cfg(not(doctest))]
45pub mod google {
46    pub mod api {
47        include!("generated/google.api.rs");
48        #[cfg(feature = "serde")]
49        include!("generated/google.api.serde.rs");
50    }
51    pub mod bytestream {
52        include!("generated/google.bytestream.rs");
53        #[cfg(feature = "serde")]
54        include!("generated/google.bytestream.serde.rs");
55    }
56    pub mod longrunning {
57        include!("generated/google.longrunning.rs");
58        #[cfg(feature = "serde")]
59        include!("generated/google.longrunning.serde.rs");
60    }
61    pub mod rpc {
62        include!("generated/google.rpc.rs");
63        #[cfg(feature = "serde")]
64        include!("generated/google.rpc.serde.rs");
65    }
66
67    pub mod protobuf {
68        #[cfg(not(feature = "serde"))]
69        include!("generated/google.protobuf.rs");
70        #[cfg(feature = "serde")]
71        pub use pbjson_types::*;
72    }
73}
74
75#[cfg(test)]
76#[cfg(feature = "serde")]
77mod json_tests {
78    use build::bazel::remote::execution::v2::NodeProperties;
79
80    use super::*;
81
82    #[test]
83    fn simple() {
84        let ar = build::bazel::remote::execution::v2::ActionResult {
85            output_files: vec![build::bazel::remote::execution::v2::OutputFile {
86                path: "packages/types/cjs/tasks-config.d.ts.map".to_string(),
87                node_properties: Some(NodeProperties {
88                    mtime: Some(google::protobuf::Timestamp {
89                        ..Default::default()
90                    }),
91                    ..Default::default()
92                }),
93                ..Default::default()
94            }],
95            ..Default::default()
96        };
97        println!("simple test");
98        println!("{}", serde_json::to_string_pretty(&ar).unwrap());
99
100        let ar_json = r#"
101            {
102              "output_files": [
103                {
104                  "path": "packages/types/cjs/tasks-config.d.ts.map",
105                  "digest": {
106                    "hash": "0ba57c041317f5b5cfd3dcaca8dd6ac7f27b67f94ad1ff18ce34912fc2a534c5",
107                    "size_bytes": 7272
108                  },
109                  "is_executable": false
110                }
111              ]
112            }
113  "#;
114
115        let ar2 =
116            serde_json::from_str::<build::bazel::remote::execution::v2::ActionResult>(ar_json)
117                .unwrap();
118        println!("ar2: {}", serde_json::to_string_pretty(&ar2).unwrap());
119    }
120}