aboutsummaryrefslogtreecommitdiffstats
path: root/crates
diff options
context:
space:
mode:
authorrtkay123 <dev@kanjala.com>2025-08-08 08:20:46 +0200
committerrtkay123 <dev@kanjala.com>2025-08-08 08:20:46 +0200
commitb9df4e581cf747c4ccffa3ded49c153e7cbf4cc1 (patch)
tree3e9db91b528f35e0b17b74ab62b34fd55a418fdd /crates
parentfd81550cd9b49c138f384dd7c097729d66f1e0b0 (diff)
downloadwarden-b9df4e581cf747c4ccffa3ded49c153e7cbf4cc1.tar.bz2
warden-b9df4e581cf747c4ccffa3ded49c153e7cbf4cc1.zip
feat(warden): config file
Diffstat (limited to 'crates')
-rw-r--r--crates/warden/Cargo.toml11
-rw-r--r--crates/warden/src/main.rs36
-rw-r--r--crates/warden/warden.toml8
3 files changed, 53 insertions, 2 deletions
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<std::path::PathBuf>,
+}
+
+#[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