config.rs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. use serde::{Serialize, Deserialize};
  2. use std::collections::HashMap;
  3. #[derive(Serialize, Deserialize)]
  4. pub struct Config {
  5. #[serde(rename(serialize = "repo_type", deserialize = "repo_type"), default)]
  6. repo_types: HashMap<String,RepoType>,
  7. #[serde(rename(serialize = "repository", deserialize = "repository"), default)]
  8. repositories: HashMap<String,Repository>,
  9. #[serde(rename(serialize = "action", deserialize = "action"), default)]
  10. actions: HashMap<String,Action>,
  11. #[serde(rename(serialize = "group", deserialize = "group"), default)]
  12. groups: HashMap<String, Group>,
  13. }
  14. #[derive(Serialize, Deserialize)]
  15. pub struct RepoType {
  16. #[serde(default)]
  17. name: String,
  18. #[serde(default)]
  19. description: String,
  20. #[serde(default)]
  21. create: String,
  22. #[serde(default)]
  23. inward: String,
  24. #[serde(default)]
  25. outward: String,
  26. }
  27. #[derive(Serialize, Deserialize)]
  28. pub struct Repository {
  29. #[serde(default)]
  30. name: String,
  31. #[serde(default)]
  32. location: String,
  33. #[serde(default)]
  34. repo_type: String,
  35. #[serde(default)]
  36. auto_create: bool,
  37. #[serde(default)]
  38. disabled: bool,
  39. #[serde(default)]
  40. options: HashMap<String, String>
  41. }
  42. #[derive(Serialize, Deserialize)]
  43. pub struct Action {
  44. #[serde(default)]
  45. name: String,
  46. #[serde(default)]
  47. command: String,
  48. #[serde(default)]
  49. disabled: bool,
  50. }
  51. #[derive(Serialize, Deserialize)]
  52. pub struct Group {
  53. #[serde(default)]
  54. name: String,
  55. #[serde(default)]
  56. actions_after: Vec<String>,
  57. #[serde(default)]
  58. members: Vec<String>
  59. }