From b9df4e581cf747c4ccffa3ded49c153e7cbf4cc1 Mon Sep 17 00:00:00 2001 From: rtkay123 Date: Fri, 8 Aug 2025 08:20:46 +0200 Subject: feat(warden): config file --- crates/warden/Cargo.toml | 11 +++++++++++ crates/warden/src/main.rs | 36 ++++++++++++++++++++++++++++++++++-- crates/warden/warden.toml | 8 ++++++++ 3 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 crates/warden/warden.toml (limited to 'crates') diff --git a/crates/warden/Cargo.toml b/crates/warden/Cargo.toml index 475e593..7b9ae9e 100644 --- a/crates/warden/Cargo.toml +++ b/crates/warden/Cargo.toml @@ -8,4 +8,15 @@ documentation.workspace = true description.workspace = true [dependencies] +anyhow.workspace = true +axum = { workspace = true, features = ["macros"] } +clap = { workspace = true, features = ["derive"] } +config = { workspace = true, features = ["convert-case", "toml"] } +serde = { workspace = true, features = ["derive"] } +tokio = { workspace = true, features = ["macros", "rt-multi-thread", "signal"] } +tracing.workspace = true warden-core = { workspace = true, features = ["iso20022"] } + +[dependencies.stack-up] +workspace = true +features = ["api", "tracing"] diff --git a/crates/warden/src/main.rs b/crates/warden/src/main.rs index e7a11a9..884d2a8 100644 --- a/crates/warden/src/main.rs +++ b/crates/warden/src/main.rs @@ -1,3 +1,35 @@ -fn main() { - println!("Hello, world!"); +use anyhow::Result; +use clap::{Parser, command}; +use stack_up::{Configuration, tracing::Tracing}; +use tracing::info; + +/// warden +#[derive(Parser, Debug)] +#[command(version, about, long_about = None)] +struct Args { + /// Path to config file + #[arg(short, long)] + config_file: Option, +} + +#[tokio::main] +async fn main() -> Result<()> { + let args = Args::parse(); + let config = include_str!("../warden.toml"); + + let mut config = config::Config::builder() + .add_source(config::File::from_str(config, config::FileFormat::Toml)); + + if let Some(cf) = args.config_file.as_ref().and_then(|v| v.to_str()) { + config = config.add_source(config::File::new(cf, config::FileFormat::Toml)); + }; + + let mut config: Configuration = config.build()?.try_deserialize()?; + config.application.name = env!("CARGO_CRATE_NAME").into(); + config.application.version = env!("CARGO_PKG_VERSION").into(); + + let _tracing = Tracing::builder().build(&config.monitoring); + + info!("Hello, world!"); + Ok(()) } diff --git a/crates/warden/warden.toml b/crates/warden/warden.toml new file mode 100644 index 0000000..ec10f51 --- /dev/null +++ b/crates/warden/warden.toml @@ -0,0 +1,8 @@ +[application] +env = "development" +port = 2210 + +[monitoring] +log-level = "warden=trace,info" + +# vim:ft=toml -- cgit v1.2.3