add basic config file parsing

This commit is contained in:
sigil-03 2025-11-26 10:33:42 -07:00
commit a127562b16
5 changed files with 1831 additions and 0 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
/target

1760
Cargo.lock generated Normal file

File diff suppressed because it is too large Load diff

22
Cargo.toml Normal file
View file

@ -0,0 +1,22 @@
[package]
name = "transport-node"
version = "0.1.0"
edition = "2024"
[dependencies]
# Random Number generator
rand_core = { version = "0.6.4", features = ["getrandom"] }
# Async IO
tokio = { version = "1.44.2", features = ["full"] }
tokio-stream = "0.1.17"
tokio-util = "0.7.15"
# Logging
log = "0.4.27"
env_logger = "0.10"
reticulum = "0.1.0"
clap = { version = "4.5.53", features = ["derive"] }
serde = { version = "1.0.228", features = ["derive"] }
bincode = { version = "2.0.1", features = ["serde"] }
toml = "0.9.8"

43
src/main.rs Normal file
View file

@ -0,0 +1,43 @@
use tokio::fs;
use serde::{Serialize, Deserialize};
use clap::Parser;
#[derive(Serialize, Deserialize, Debug)]
struct TcpServerConfig {
bind_addr: String,
}
#[derive(Serialize, Deserialize, Debug)]
enum InterfaceConfig {
TcpServer(TcpServerConfig)
}
#[derive(Serialize, Deserialize, Debug)]
struct Config {
interfaces: Vec<InterfaceConfig>,
}
#[derive(Parser)]
struct Cli {
#[arg(short, long)]
config_file: String,
}
#[tokio::main]
async fn main() {
env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("trace")).init();
log::info!(">>> TRANSPORT NODE <<<");
let cli = Cli::parse();
let config: Config = toml::from_str(&fs::read_to_string(cli.config_file).await.unwrap()).unwrap();
println!("{config:?}");
log::info!("exit");
}

5
test_config.toml Normal file
View file

@ -0,0 +1,5 @@
[[interfaces]]
[interfaces.TcpServer]
bind_addr = "0.0.0.0:4242"