diff options
| author | Eskil Queseth <eskilq@kth.se> | 2020-10-23 02:17:25 +0200 |
|---|---|---|
| committer | Eskil Queseth <eskilq@kth.se> | 2020-10-23 02:17:25 +0200 |
| commit | 75a704a1eb25ec43bcb5888f7889b7988b00e77c (patch) | |
| tree | 69caf8c3821cc1ca0d8f0923a3bf2d720fd83ea5 | |
| parent | cd3c1ad6c508a698314ecc59ae6de320263f740d (diff) | |
| download | mum-75a704a1eb25ec43bcb5888f7889b7988b00e77c.tar.gz | |
add support for mumctl server config
| -rw-r--r-- | mumctl/src/main.rs | 109 |
1 files changed, 57 insertions, 52 deletions
diff --git a/mumctl/src/main.rs b/mumctl/src/main.rs index 7f74077..293002a 100644 --- a/mumctl/src/main.rs +++ b/mumctl/src/main.rs @@ -42,7 +42,7 @@ fn main() { SubCommand::with_name("disconnect")) .subcommand( SubCommand::with_name("config") - .arg(Arg::with_name("server_name").required(true)) + .arg(Arg::with_name("server_name")) .arg(Arg::with_name("var_name")) .arg(Arg::with_name("var_value"))) .subcommand( @@ -207,60 +207,65 @@ fn match_server_connect(matches : &clap::ArgMatches<'_>) { } fn match_server_config(matches: &clap::ArgMatches<'_>, config: &mut mumlib::config::Config) { - let server_name = matches.value_of("server_name").unwrap(); - if let Some(servers) = &mut config.servers { - let server = servers - .iter_mut() - .find(|s| s.name == server_name); - if let Some(server) = server { - if let Some(var_name) = matches.value_of("var_name") { - if let Some(var_value) = matches.value_of("var_value") { - // save var_value in var_name (if it is valid) - match var_name { - "name" => { - println!("{} use mumctl server rename instead!", "error:".red()); - }, - "host" => { - server.host = var_value.to_string(); - }, - "port" => { - server.port = Some(var_value.parse().unwrap()); - }, - "username" => { - server.username = Some(var_value.to_string()); - }, - "password" => { - server.password = Some(var_value.to_string()); //TODO ask stdin if empty - }, - _ => { - println!("{} variable {} not found", "error:".red(), var_name); - }, - }; - } else { // var_value is None - // print value of var_name - println!("{}", match var_name { - "name" => { server.name.to_string() }, - "host" => { server.host.to_string() }, - "port" => { server.port.map(|s| s.to_string()).unwrap_or(format!("{} not set", "error:".red())) }, - "username" => { server.username.as_ref().map(|s| s.to_string()).unwrap_or(format!("{} not set", "error:".red())) }, - "password" => { server.password.as_ref().map(|s| s.to_string()).unwrap_or(format!("{} not set", "error:".red())) }, - _ => { format!("{} unknown variable", "error:".red()) }, - }); + if let Some(server_name) = matches.value_of("server_name") { + if let Some(servers) = &mut config.servers { + let server = servers + .iter_mut() + .find(|s| s.name == server_name); + if let Some(server) = server { + if let Some(var_name) = matches.value_of("var_name") { + if let Some(var_value) = matches.value_of("var_value") { + // save var_value in var_name (if it is valid) + match var_name { + "name" => { + println!("{} use mumctl server rename instead!", "error:".red()); + } + "host" => { + server.host = var_value.to_string(); + } + "port" => { + server.port = Some(var_value.parse().unwrap()); + } + "username" => { + server.username = Some(var_value.to_string()); + } + "password" => { + server.password = Some(var_value.to_string()); //TODO ask stdin if empty + } + _ => { + println!("{} variable {} not found", "error:".red(), var_name); + } + }; + } else { // var_value is None + // print value of var_name + println!("{}", match var_name { + "name" => { server.name.to_string() } + "host" => { server.host.to_string() } + "port" => { server.port.map(|s| s.to_string()).unwrap_or(format!("{} not set", "error:".red())) } + "username" => { server.username.as_ref().map(|s| s.to_string()).unwrap_or(format!("{} not set", "error:".red())) } + "password" => { server.password.as_ref().map(|s| s.to_string()).unwrap_or(format!("{} not set", "error:".red())) } + _ => { format!("{} unknown variable", "error:".red()) } + }); + } + } else { // var_name is None + // print server config + print!("{}{}{}{}", + format!("host: {}\n", server.host.to_string()), + server.port.map(|s| format!("port: {}\n", s)).unwrap_or("".to_string()), + server.username.as_ref().map(|s| format!("username: {}\n", s)).unwrap_or("".to_string()), + server.password.as_ref().map(|s| format!("password: {}\n", s)).unwrap_or("".to_string()), + ) } - } else { // var_name is None - // print server config - print!("{}{}{}{}", - format!("host: {}\n", server.host.to_string()), - server.port.map(|s| format!("port: {}\n", s)).unwrap_or("".to_string()), - server.username.as_ref().map(|s| format!("username: {}\n", s)).unwrap_or("".to_string()), - server.password.as_ref().map(|s| format!("password: {}\n", s)).unwrap_or("".to_string()), - ) + } else { // server is None + println!("{} server {} not found", "error:".red(), server_name); } - } else { // server is None - println!("{} server {} not found", "error:".red(), server_name); + } else { // servers is None + println!("{} no servers found in configuration", "error:".red()); + } + } else { + for server in config.servers.iter().flat_map(|e| e.iter()) { + println!("{}", server.name); } - } else { // servers is None - println!("{} no servers found in configuration", "error:".red()); } } |
