From 9c850d6c4d0ed468709c2eb5340d7b64bbb9aa68 Mon Sep 17 00:00:00 2001 From: rtkay123 Date: Mon, 11 Aug 2025 22:02:37 +0200 Subject: build(config): create crate --- lib/warden-core/Cargo.toml | 1 + lib/warden-core/build.rs | 32 +++++++++++++++++++++++++------- lib/warden-core/src/configuration.rs | 3 +++ lib/warden-core/src/google.rs | 1 + lib/warden-core/src/lib.rs | 8 ++++++-- 5 files changed, 36 insertions(+), 9 deletions(-) create mode 100644 lib/warden-core/src/configuration.rs (limited to 'lib') diff --git a/lib/warden-core/Cargo.toml b/lib/warden-core/Cargo.toml index 759e018..dc9e83e 100644 --- a/lib/warden-core/Cargo.toml +++ b/lib/warden-core/Cargo.toml @@ -23,6 +23,7 @@ utoipa = { workspace = true, optional = true } [features] default = [] +configuration = ["dep:prost", "dep:tonic", "dep:tonic-types", "dep:tonic-prost"] message = ["dep:prost", "dep:tonic", "dep:tonic-types", "dep:tonic-prost"] pseudonyms = ["dep:prost", "dep:tonic", "dep:tonic-types", "dep:tonic-prost"] serde = ["dep:serde", "serde/derive", "dep:serde_json"] diff --git a/lib/warden-core/build.rs b/lib/warden-core/build.rs index 37c1c68..9088fd7 100644 --- a/lib/warden-core/build.rs +++ b/lib/warden-core/build.rs @@ -1,12 +1,14 @@ -#[cfg(any(feature = "message", feature = "pseudonyms"))] +#[cfg(any(feature = "message", feature = "pseudonyms", feature = "configuration"))] enum Entity { #[cfg(feature = "message")] ISO2022, #[cfg(feature = "pseudonyms")] Pseudonyms, + #[cfg(feature = "configuration")] + Configuration, } -#[cfg(any(feature = "message", feature = "pseudonyms"))] +#[cfg(any(feature = "message", feature = "pseudonyms", feature = "configuration"))] impl Entity { fn protos(&self) -> Vec<&'static str> { let mut res: Vec<&'static str> = vec![]; @@ -16,6 +18,14 @@ impl Entity { vec!["proto/warden_message.proto"] } + + #[cfg(feature = "configuration")] + fn configuration_protos() -> Vec<&'static str> { + vec![ + "proto/configuration/routing.proto", + ] + } + #[cfg(feature = "pseudonyms")] fn pseudonyms_protos() -> Vec<&'static str> { vec![ @@ -35,6 +45,10 @@ impl Entity { Entity::Pseudonyms => { res.extend(pseudonyms_protos()); } + #[cfg(feature = "configuration")] + Entity::Configuration => { + res.extend(configuration_protos()); + } } res } @@ -43,7 +57,7 @@ impl Entity { fn main() -> Result<(), Box> { println!("cargo:rerun-if-changed=../../proto"); - #[cfg(any(feature = "message", feature = "pseudonyms"))] + #[cfg(any(feature = "message", feature = "pseudonyms", feature = "configuration"))] let mut protos: Vec<&'static str> = vec![]; #[cfg(feature = "message")] @@ -52,13 +66,17 @@ fn main() -> Result<(), Box> { #[cfg(feature = "pseudonyms")] protos.extend(Entity::Pseudonyms.protos()); - #[cfg(any(feature = "message", feature = "pseudonyms"))] + #[cfg(feature = "configuration")] + protos.extend(Entity::Configuration.protos()); + + #[cfg(any(feature = "message", feature = "pseudonyms", feature = "configuration"))] build_proto(&protos)?; + Ok(()) } -#[cfg(any(feature = "message", feature = "pseudonyms"))] +#[cfg(any(feature = "message", feature = "pseudonyms", feature = "configuration"))] fn build_proto(protos: &[&str]) -> Result<(), Box> { let out_dir = std::path::PathBuf::from(std::env::var("OUT_DIR").unwrap()); @@ -82,7 +100,7 @@ fn build_proto(protos: &[&str]) -> Result<(), Box> { Ok(()) } -#[cfg(all(feature = "serde", any(feature = "pseudonyms", feature = "message")))] +#[cfg(all(feature = "serde", any(feature = "pseudonyms", feature = "message", feature = "configuration")))] fn add_serde(config: tonic_prost_build::Builder) -> tonic_prost_build::Builder { let config = config.type_attribute( ".", @@ -98,7 +116,7 @@ fn add_serde(config: tonic_prost_build::Builder) -> tonic_prost_build::Builder { config } -#[cfg(all(feature = "openapi", any(feature = "message", feature = "pseudonyms")))] +#[cfg(all(feature = "openapi", any(feature = "message", feature = "pseudonyms", feature = "configuration")))] fn add_openapi(config: tonic_prost_build::Builder) -> tonic_prost_build::Builder { config.type_attribute(".", "#[derive(utoipa::ToSchema)]") } diff --git a/lib/warden-core/src/configuration.rs b/lib/warden-core/src/configuration.rs new file mode 100644 index 0000000..da589c2 --- /dev/null +++ b/lib/warden-core/src/configuration.rs @@ -0,0 +1,3 @@ +pub mod routing { + tonic::include_proto!("configuration.routing"); +} diff --git a/lib/warden-core/src/google.rs b/lib/warden-core/src/google.rs index 30accb9..88f7037 100644 --- a/lib/warden-core/src/google.rs +++ b/lib/warden-core/src/google.rs @@ -5,6 +5,7 @@ pub mod protobuf { include!(concat!(env!("OUT_DIR"), "/google.protobuf.rs")); } +#[cfg(any(feature = "message", feature = "pseudonyms"))] pub mod r#type { include!(concat!(env!("OUT_DIR"), "/google.r#type.rs")); } diff --git a/lib/warden-core/src/lib.rs b/lib/warden-core/src/lib.rs index d039516..c97bef3 100644 --- a/lib/warden-core/src/lib.rs +++ b/lib/warden-core/src/lib.rs @@ -7,12 +7,12 @@ )] /// Type file descriptor -#[cfg(any(feature = "message", feature = "pseudonyms"))] +#[cfg(any(feature = "message", feature = "pseudonyms", feature = "configuration"))] pub const FILE_DESCRIPTOR_SET: &[u8] = tonic::include_file_descriptor_set!("warden_descriptor"); /// Google well known types #[allow(missing_docs)] -#[cfg(any(feature = "message", feature = "pseudonyms"))] +#[cfg(any(feature = "message", feature = "pseudonyms", feature = "configuration"))] pub mod google; /// ISO20022 messages @@ -29,3 +29,7 @@ pub mod message; #[allow(missing_docs)] #[cfg(feature = "pseudonyms")] pub mod pseudonyms; + +#[allow(missing_docs)] +#[cfg(feature = "configuration")] +pub mod configuration; -- cgit v1.2.3