diff --git a/src/config.rs b/src/config.rs index f8cab18..bca1da7 100644 --- a/src/config.rs +++ b/src/config.rs @@ -48,6 +48,8 @@ pub struct Settings { pub quiet: bool, pub force: bool, pub server_password: Option, + pub server_address: Option, + pub server_port: Option, pub compression: Option, pub digest: Option, pub meta_plugins: Vec, @@ -87,6 +89,12 @@ impl Settings { let server_password = args.options.server_password.clone() .or_else(|| config.get_server_password().ok().flatten()); + let server_address = args.mode.server_address.clone() + .or_else(|| config.server.as_ref().and_then(|s| s.address.clone())); + + let server_port = args.mode.server_port + .or_else(|| config.server.as_ref().and_then(|s| s.port)); + let compression = args.item.compression.clone() .or_else(|| config.compression_plugin.as_ref().map(|c| c.name.clone())); @@ -110,35 +118,14 @@ impl Settings { quiet, force, server_password, + server_address, + server_port, compression, digest, meta_plugins, meta: args.item.meta.clone(), }) } - - /// Get server address from args or config - pub fn get_server_address(&self, args: &Args, config: &Config) -> Option { - // CLI args take priority - if let Some(server_addr) = &args.mode.server { - return Some(server_addr.clone()); - } - - // Then config file - if let Some(server_config) = &config.server { - let mut addr = server_config.address.clone().unwrap_or_else(|| "127.0.0.1".to_string()); - if let Some(port) = server_config.port { - if !addr.contains(':') { - addr.push_str(&format!(":{}", port)); - } - } else if !addr.contains(':') { - addr.push_str(":8080"); - } - return Some(addr); - } - - None - } } impl Config {