diff options
Diffstat (limited to 'src/config.rs')
-rw-r--r-- | src/config.rs | 54 |
1 files changed, 0 insertions, 54 deletions
diff --git a/src/config.rs b/src/config.rs deleted file mode 100644 index da65385..0000000 --- a/src/config.rs +++ /dev/null @@ -1,54 +0,0 @@ -use crate::TwinHError; -use once_cell::sync::Lazy; -use std::{env, error::Error, net::IpAddr, net::Ipv4Addr, net::SocketAddr}; - -pub static CONFIG_INSTANCE: Lazy<Config> = Lazy::new(|| match Config::new() { - Ok(c) => c, - Err(e) => panic!("twinh: config error: {}", e), -}); - -#[derive(Clone, Debug)] -pub struct Config { - pub bind_addr: SocketAddr, - pub db_path: String, -} - -impl Default for Config { - fn default() -> Self { - Self { - bind_addr: SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 5353), - db_path: String::from("/var/db/twinh"), - } - } -} - -impl Config { - fn new() -> Result<Self, Box<dyn Error>> { - let mut args = env::args().skip(1); - - let db_path = args - .next() - .ok_or_else(|| TwinHError(String::from("database directory not provided")))?; - - let mut config = Config { - bind_addr: SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 5353), - db_path, - }; - - while let Some(arg) = args.next() { - match arg.as_str() { - "--addr" => { - let addr = args.next().unwrap_or_default().parse()?; - config.bind_addr.set_ip(addr); - } - "--port" => { - let port = args.next().unwrap_or_default().parse()?; - config.bind_addr.set_port(port); - } - _ => {} - }; - } - - Ok(config) - } -} |