use std::path::PathBuf; use clap::Args; use lazy_supplements_core::config::PartialConfig; use libp2p::mdns::Config; use serde::{Deserialize, Serialize}; use crate::config::error::ConfigError; pub struct UnixConfig { pub socket_path: PathBuf, } impl TryFrom for UnixConfig { type Error = ConfigError; fn try_from(config: PartialUnixConfig) -> Result { Ok(Self{ socket_path: config.socket_path.ok_or(ConfigError::MissingConfig("socket_path".to_string()))? }) } } #[derive(Args, Clone, Debug, Deserialize, Serialize)] pub struct PartialUnixConfig { pub socket_path: Option, } impl From for PartialUnixConfig { fn from(source: UnixConfig) -> Self { Self { socket_path: Some(source.socket_path) } } } impl PartialConfig for PartialUnixConfig { fn empty() -> Self { Self { socket_path: None } } fn default() -> Self { todo!() } fn is_empty(&self) -> bool { self.socket_path.is_none() } fn merge(&mut self, other: Self) { if let Some(x) = other.socket_path { self.socket_path = Some(x); }; } }