diff --git a/Cargo.lock b/Cargo.lock index ac93c0e..d9ef761 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1300,9 +1300,9 @@ dependencies = [ [[package]] name = "pueue-lib" -version = "0.17.2" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "921bdc4d984f20492063b23c482cd090f88922e4aca9fd3751362e8620003c84" +checksum = "270bc7e5aac11e67289461b434e565789245494a43f2e41bc4a6393787f29783" dependencies = [ "async-std", "async-tls", diff --git a/Cargo.toml b/Cargo.toml index 269ce39..8336ebd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,7 +30,7 @@ name = "pueued" path = "daemon/main.rs" [dependencies] -pueue-lib = "0.17.2" +pueue-lib = "0.18.0" #pueue-lib = { git = "https://github.com/Nukesor/pueue-lib", branch = "master" } #pueue-lib = { path = "../../libraries/pueue-lib" } diff --git a/client/client.rs b/client/client.rs index e9ca745..b158deb 100644 --- a/client/client.rs +++ b/client/client.rs @@ -435,11 +435,13 @@ impl Client { Ok(Message::Send(message)) } SubCommand::Group { add, remove } => { - let message = GroupMessage { - add: add.clone(), - remove: remove.clone(), - }; - Ok(Message::Group(message)) + if let Some(group) = add { + Ok(Message::Group(GroupMessage::Add(group.clone()))) + } else if let Some(group) = remove { + Ok(Message::Group(GroupMessage::Remove(group.clone()))) + } else { + Ok(Message::Group(GroupMessage::List)) + } } SubCommand::Status { .. } => Ok(Message::Status), SubCommand::Log { diff --git a/daemon/network/message_handler/group.rs b/daemon/network/message_handler/group.rs index 48bf4aa..1eb3f89 100644 --- a/daemon/network/message_handler/group.rs +++ b/daemon/network/message_handler/group.rs @@ -15,50 +15,52 @@ use crate::ok_or_return_failure_message; pub fn group(message: GroupMessage, state: &SharedState) -> Message { let mut state = state.lock().unwrap(); - // Create a new group. - if let Some(group) = message.add { - if state.groups.contains_key(&group) { - return create_failure_message(format!("Group \"{}\" already exists", group)); + match message { + GroupMessage::List => { + // Return information about all groups to the client. + Message::GroupResponse(GroupResponseMessage { + groups: state.groups.clone(), + settings: state.settings.daemon.groups.clone(), + }) } - state.create_group(&group); + GroupMessage::Add(group) => { + if state.groups.contains_key(&group) { + return create_failure_message(format!("Group \"{}\" already exists", group)); + } + state.create_group(&group); - // Save the state and the settings file. - ok_or_return_failure_message!(save_state(&state)); - if let Err(error) = save_settings(&state) { - return create_failure_message(format!( - "Failed while saving the config file: {}", - error - )); + // Save the state and the settings file. + ok_or_return_failure_message!(save_state(&state)); + if let Err(error) = save_settings(&state) { + return create_failure_message(format!( + "Failed while saving the config file: {}", + error + )); + } + + create_success_message(format!("Group \"{}\" created", group)) } - return create_success_message(format!("Group \"{}\" created", group)); + // Remove an existing group. + GroupMessage::Remove(group) => { + if let Err(message) = ensure_group_exists(&state, &group) { + return message; + } + + if let Err(error) = state.remove_group(&group) { + return create_failure_message(format!("{}", error)); + } + + // Save the state and the settings file. + ok_or_return_failure_message!(save_state(&state)); + if let Err(error) = save_settings(&state) { + return create_failure_message(format!( + "Failed while saving the config file: {}", + error + )); + } + + create_success_message(format!("Group \"{}\" removed", group)) + } } - - // Remove an existing group. - if let Some(group) = message.remove { - if let Err(message) = ensure_group_exists(&state, &group) { - return message; - } - - if let Err(error) = state.remove_group(&group) { - return create_failure_message(format!("{}", error)); - } - - // Save the state and the settings file. - ok_or_return_failure_message!(save_state(&state)); - if let Err(error) = save_settings(&state) { - return create_failure_message(format!( - "Failed while saving the config file: {}", - error - )); - } - - return create_success_message(format!("Group \"{}\" removed", group)); - } - - // Return information about all groups to the client. - Message::GroupResponse(GroupResponseMessage { - groups: state.groups.clone(), - settings: state.settings.daemon.groups.clone(), - }) }