group.rs 918 B

12345678910111213141516171819202122232425262728293031323334353637
  1. use serde::{Deserialize, Serialize};
  2. use std::fmt;
  3. use crate::lib::config::Config;
  4. #[derive(Serialize, Deserialize)]
  5. pub struct Group {
  6. #[serde(default)]
  7. name: String,
  8. #[serde(default)]
  9. actions_after: Vec<String>,
  10. #[serde(default)]
  11. members: Vec<String>,
  12. }
  13. pub fn add(config: &mut Config, name: &String) {
  14. let group = Group {
  15. name: name.to_string(),
  16. actions_after: Vec::new(),
  17. members: Vec::new()
  18. };
  19. config.groups.insert(name.to_string(), group);
  20. }
  21. impl fmt::Display for Group {
  22. fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
  23. write!(f, "Group {}:\n\tRepos:\n", self.name)?;
  24. for repo in &self.members {
  25. write!(f, "\t\t - {}\n", repo)?;
  26. }
  27. write!(f, "\tActions\n")?;
  28. for action in &self.actions_after {
  29. write!(f, "\t\t - {}\n", action)?;
  30. }
  31. write!(f, "")
  32. }
  33. }