jet/
lib.rs

1//! Client bindings for the Juniper JET gRPC API.
2//!
3//! # Building
4//!
5//! The gRPC service bindings are generated by [tonic-build] at build-time.
6//!
7//! The `protoc` command line tool (included in the `protobuf` package on most Linux distributions)
8//! must be available at compile time.
9//!
10//! # Features
11//!
12//! The JET gRPC service definitions vary be Junos version.
13//!
14//! Support for each `major.minor` Junos version is enabled by a corresponding
15//! `junos-{major}-{minor}` cargo feature.
16//!
17//! Only the latest supported Junos version is enabled by default, via the `latest` cargo feature.
18//!
19//! Multiple versions can be enabled simultaneously, but will impact compile times.
20//!
21#![doc = include_str!("../examples/README.md")]
22//!
23//! ``` no_run
24#![doc = include_str!("../examples/demo-op-cmd.rs")]
25//! ```
26//!
27//! [tonic-build]: https://docs.rs/tonic-build
28#![doc(html_root_url = "https://docs.rs/juniper-jet/0.1.0-alpha.1")]
29// clippy lints
30#![warn(clippy::pedantic)]
31#![warn(clippy::cargo)]
32#![warn(clippy::nursery)]
33#![allow(clippy::redundant_pub_crate)]
34// rustc lints
35#![allow(box_pointers)]
36#![warn(absolute_paths_not_starting_with_crate)]
37#![warn(deprecated_in_future)]
38#![warn(elided_lifetimes_in_paths)]
39#![warn(explicit_outlives_requirements)]
40#![warn(keyword_idents)]
41#![warn(macro_use_extern_crate)]
42#![warn(meta_variable_misuse)]
43#![warn(missing_abi)]
44#![warn(missing_copy_implementations)]
45#![warn(missing_debug_implementations)]
46#![warn(missing_docs)]
47#![warn(non_ascii_idents)]
48#![warn(noop_method_call)]
49#![warn(pointer_structural_match)]
50#![warn(rust_2021_incompatible_closure_captures)]
51#![warn(rust_2021_incompatible_or_patterns)]
52#![warn(rust_2021_prefixes_incompatible_syntax)]
53#![warn(rust_2021_prelude_collisions)]
54#![warn(single_use_lifetimes)]
55#![warn(trivial_casts)]
56#![warn(trivial_numeric_casts)]
57#![warn(unreachable_pub)]
58#![warn(unsafe_code)]
59#![warn(unsafe_op_in_unsafe_fn)]
60#![warn(unstable_features)]
61#![warn(unused_crate_dependencies)]
62#![warn(unused_extern_crates)]
63#![warn(unused_import_braces)]
64#![warn(unused_lifetimes)]
65#![warn(unused_qualifications)]
66#![warn(unused_results)]
67#![warn(variant_size_differences)]
68// docs.rs build config
69#![cfg_attr(docsrs, feature(doc_auto_cfg))]
70
71#[cfg(feature = "latest")]
72/// Generated JET gRPC service definitions for the latest Junos version.
73pub mod latest {
74    pub use super::junos_23_1::jnx;
75}
76
77junos_versions! {
78    "23.1": #[cfg(feature = "junos-23-1")] junos_23_1,
79    "22.4": #[cfg(feature = "junos-22-4")] junos_22_4,
80    "22.3": #[cfg(feature = "junos-22-3")] junos_22_3,
81    "22.2": #[cfg(feature = "junos-22-2")] junos_22_2,
82    "21.4": #[cfg(feature = "junos-21-4")] junos_21_4,
83    "21.3": #[cfg(feature = "junos-21-3")] junos_21_3,
84    "21.2": #[cfg(feature = "junos-21-2")] junos_21_2,
85    "21.1": #[cfg(feature = "junos-21-1")] junos_21_1,
86    "20.4": #[cfg(feature = "junos-20-4")] junos_20_4,
87    "20.3": #[cfg(feature = "junos-20-3")] junos_20_3,
88    "20.2": #[cfg(feature = "junos-20-2")] junos_20_2,
89    "20.1": #[cfg(feature = "junos-20-1")] junos_20_1,
90    "19.4": #[cfg(feature = "junos-19-4")] junos_19_4,
91    "19.3": #[cfg(feature = "junos-19-3")] junos_19_3,
92    "19.2": #[cfg(feature = "junos-19-2")] junos_19_2,
93    "19.1": #[cfg(feature = "junos-19-1")] junos_19_1,
94}
95
96macro_rules! junos_versions {
97    ( $( $version:literal: $( #[$attr:meta] )+ $mod:ident ),* $(,)? ) => {
98        $(
99            $( #[$attr] )+
100            #[allow(clippy::doc_markdown)]
101            #[allow(clippy::future_not_send)]
102            #[allow(clippy::missing_const_for_fn)]
103            #[allow(clippy::missing_errors_doc)]
104            #[allow(clippy::module_name_repetitions)]
105            #[allow(clippy::must_use_candidate)]
106            #[allow(clippy::struct_excessive_bools)]
107            #[allow(clippy::tabs_in_doc_comments)]
108            #[allow(clippy::use_self)]
109            #[allow(clippy::wildcard_imports)]
110            #[allow(rustdoc::invalid_html_tags)]
111            #[allow(rustdoc::broken_intra_doc_links)]
112            #[allow(unused_results)]
113            #[allow(unused_qualifications)]
114            #[allow(missing_copy_implementations)]
115            #[allow(missing_docs)]
116            #[allow(variant_size_differences)]
117            #[doc = "Generated JET gRPC service definitions for Junos `"]
118            #[doc = $version]
119            #[doc = "`."]
120            pub mod $mod {
121                include!(concat!(env!("OUT_DIR"), "/", stringify!($mod), "/jnx.jet.rs"));
122            }
123        )*
124    };
125}
126use junos_versions;
127
128// silence unused dev-dependency warnings
129#[cfg(test)]
130mod deps {
131    use clap as _;
132    use clap_verbosity_flag as _;
133    use log as _;
134    use rpassword as _;
135    use simple_logger as _;
136    use tokio as _;
137    use version_sync as _;
138}