diff options
| author | Eskil Queseth <eskilq@kth.se> | 2020-10-17 18:39:36 +0200 |
|---|---|---|
| committer | Eskil Queseth <eskilq@kth.se> | 2020-10-17 18:39:36 +0200 |
| commit | c873e4250c58d872763129bff2c0b0e6c91c0a2a (patch) | |
| tree | 1a55459dd031e5c56ce6ce0db943564aa97baace /mumctl/src | |
| parent | b10d20a20496eb9287975fc9fd9b688d59896031 (diff) | |
| download | mum-c873e4250c58d872763129bff2c0b0e6c91c0a2a.tar.gz | |
add pretty printing for mumctl status
Diffstat (limited to 'mumctl/src')
| -rw-r--r-- | mumctl/src/main.rs | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/mumctl/src/main.rs b/mumctl/src/main.rs index cfd48f8..c73b793 100644 --- a/mumctl/src/main.rs +++ b/mumctl/src/main.rs @@ -6,6 +6,8 @@ use std::{fs, io, iter}; use colored::Colorize; use mumlib::state::Channel; +const INDENTATION: &str = " "; + macro_rules! err_print { ($func:expr) => { if let Err(e) = $func { @@ -84,7 +86,18 @@ fn main() { } else if let Some(_matches) = matches.subcommand_matches("status") { match send_command(Command::Status) { Ok(res) => { - println!("{:#?}", res.unwrap()); + match res { + Some(CommandResponse::Status { server_state }) => { + println!("Connected to {} as {}", server_state.host, server_state.username); + let own_channel = server_state.channels.iter().find(|e| e.users.iter().any(|e| e.name == server_state.username)).unwrap(); + println!("Currently in {} with {} other client{}:", own_channel.name, own_channel.users.len() - 1, if own_channel.users.len() == 2 { "" } else { "s" }); + println!("{}{}", INDENTATION, own_channel.name); + for user in &own_channel.users { + println!("{}{}{}", INDENTATION, INDENTATION, user); + } + } + _ => unreachable!(), + } } Err(e) => println!("{} {}", "error:".red(), e), } @@ -119,13 +132,13 @@ fn send_command(command: Command) -> mumlib::error::Result<Option<CommandRespons } fn print_channel(channel: &Channel, depth: usize) { - println!("{}{}{}", iter::repeat(" ").take(depth).collect::<String>(), channel.name.bold(), if channel.max_users != 0 { + println!("{}{}{}", iter::repeat(INDENTATION).take(depth).collect::<String>(), channel.name.bold(), if channel.max_users != 0 { format!(" {}/{}", channel.users.len(), channel.max_users) } else { "".to_string() }); for user in &channel.users { - println!("{}-{}", iter::repeat(" ").take(depth + 1).collect::<String>(), user.name); + println!("{}-{}", iter::repeat(INDENTATION).take(depth + 1).collect::<String>(), user); } for child in &channel.children { print_channel(child, depth + 1); |
