use serde::{Serialize, Deserialize}; use std::collections::HashMap; #[derive(Serialize, Deserialize)] pub struct Config { #[serde(rename(serialize = "repo_type", deserialize = "repo_type"), default)] repo_types: HashMap, #[serde(rename(serialize = "repository", deserialize = "repository"), default)] repositories: HashMap, #[serde(rename(serialize = "action", deserialize = "action"), default)] actions: HashMap, #[serde(rename(serialize = "group", deserialize = "group"), default)] groups: HashMap, } #[derive(Serialize, Deserialize)] pub struct RepoType { #[serde(default)] name: String, #[serde(default)] description: String, #[serde(default)] create: String, #[serde(default)] inward: String, #[serde(default)] outward: String, } #[derive(Serialize, Deserialize)] pub struct Repository { #[serde(default)] name: String, #[serde(default)] location: String, #[serde(default)] repo_type: String, #[serde(default)] auto_create: bool, #[serde(default)] disabled: bool, #[serde(default)] options: HashMap } #[derive(Serialize, Deserialize)] pub struct Action { #[serde(default)] name: String, #[serde(default)] command: String, #[serde(default)] disabled: bool, } #[derive(Serialize, Deserialize)] pub struct Group { #[serde(default)] name: String, #[serde(default)] actions_after: Vec, #[serde(default)] members: Vec }