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