forked from sigil-03/transport-node
add basic config file parsing
This commit is contained in:
commit
a127562b16
5 changed files with 1831 additions and 0 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
/target
|
||||||
1760
Cargo.lock
generated
Normal file
1760
Cargo.lock
generated
Normal file
File diff suppressed because it is too large
Load diff
22
Cargo.toml
Normal file
22
Cargo.toml
Normal 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
43
src/main.rs
Normal 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
5
test_config.toml
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
[[interfaces]]
|
||||||
|
|
||||||
|
[interfaces.TcpServer]
|
||||||
|
bind_addr = "0.0.0.0:4242"
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue