From 323423f44492fe0ef6278beedeff0a8e1033c9e1 Mon Sep 17 00:00:00 2001 From: Gabriel Simmer Date: Wed, 26 Apr 2023 20:59:36 +0100 Subject: [PATCH] Make server configuration optional Bind to port 9000 by default --- src/main.rs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/main.rs b/src/main.rs index 3b20f05..97f1e19 100644 --- a/src/main.rs +++ b/src/main.rs @@ -13,7 +13,7 @@ use std::collections::HashMap; // Configuration struct with mapping of OSC addresses to keyboard keys, and a general server configuration. #[derive(Deserialize, Serialize)] struct Config { - server: ServerConfig, + server: Option, // Mappings is called mapping in config for ease of use. #[serde(rename = "mapping")] mappings: Vec, @@ -64,8 +64,9 @@ fn main() { event_key_map.insert(mapping.event, ec); } - println!("Starting OSC server on port {}...", config.server.port); - let addr = match SocketAddrV4::from_str(format!("127.0.0.1:{}", config.server.port).as_str()) { + let port = config.server.unwrap().port; + println!("Starting OSC server on port {}...", port); + let addr = match SocketAddrV4::from_str(format!("127.0.0.1:{}", port).as_str()) { Ok(addr) => addr, Err(_) => panic!("Unable to match address"), }; @@ -92,7 +93,7 @@ fn load_config() -> Result { // If the config file isn't found, create one with default values if !std::path::Path::new("config.toml").exists() { let default_config = Config { - server: ServerConfig { port: 9000 }, + server: Some(ServerConfig { port: 9000 }), mappings: vec![], }; let toml = toml::to_string_pretty(&default_config).map_err(|e| e.to_string())?; @@ -100,7 +101,11 @@ fn load_config() -> Result { println!("Created default config file at config.toml"); } let config_file = std::fs::read_to_string("config.toml").map_err(|e| e.to_string())?; - let config: Config = toml::from_str(&config_file).map_err(|e| e.to_string())?; + let mut config: Config = toml::from_str(&config_file).map_err(|e| e.to_string())?; + // Provide a default ServerConfig if one is not set. + if config.server.is_none() { + config.server = Some(ServerConfig { port: 9000 }); + } Ok(config) }