action.rs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. use serde::{Deserialize, Serialize};
  2. use std::fmt;
  3. use crate::lib::config::Config;
  4. #[derive(Serialize, Deserialize)]
  5. pub struct Action {
  6. #[serde(default)]
  7. name: String,
  8. #[serde(default)]
  9. description: String,
  10. #[serde(default)]
  11. pub command: String,
  12. #[serde(default)]
  13. pub disabled: bool,
  14. }
  15. pub fn add(config: &mut Config, name: &String, description: &String, command: &String) {
  16. let action = Action {
  17. name : name.to_string(),
  18. description: description.to_string(),
  19. command: command.to_string(),
  20. disabled: false
  21. };
  22. config.actions.insert(name.to_string(), action);
  23. config.is_changed = true;
  24. }
  25. pub fn update_disabled(config: &mut Config, name: &String, value: bool) {
  26. let action = config.actions.get_mut(&name.to_string());
  27. match action {
  28. Some(action) => {
  29. action.disabled = value;
  30. config.is_changed = true;
  31. },
  32. None => panic!("No known action named \"{}\".", name)
  33. }
  34. }
  35. pub fn update_description(config: &mut Config, name: &String, description: &String) {
  36. let action = config.actions.get_mut(&name.to_string());
  37. match action {
  38. Some(action) => {
  39. action.description = description.to_string();
  40. config.is_changed = true;
  41. },
  42. None => panic!("No known action named \"{}\".", name)
  43. }
  44. }
  45. pub fn update_command(config: &mut Config, name: &String, command: &String) {
  46. let action = config.actions.get_mut(&name.to_string());
  47. match action {
  48. Some(action) => {
  49. action.command = command.to_string();
  50. config.is_changed = true;
  51. },
  52. None => panic!("No known action named \"{}\".", name)
  53. }
  54. }
  55. impl fmt::Display for Action {
  56. fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
  57. write!(f, "Action {}:\n\t\"{}\"\n\tCommand: \"{}\"\n\tDisabled: {}",
  58. self.name,
  59. self.description,
  60. self.command,
  61. self.disabled
  62. )
  63. }
  64. }