1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
use crate::prelude::*; #[derive(Debug, Serialize, Deserialize)] #[serde(tag = "document", content = "data")] pub enum Chunk { #[serde(rename = "modulemd")] ModuleMd(ModuleMDData), #[serde(rename = "modulemd-defaults")] Defaults(DefaultsData), } #[derive(Debug, Serialize, Deserialize)] pub struct License { #[serde(default)] pub module: Vec<String>, #[serde(default)] pub content: Vec<String>, } pub type Requires = HashMap<String, Vec<String>>; #[derive(Debug, Serialize, Deserialize)] pub struct Depencency { pub requires: Requires, #[serde(default)] pub buildrequires: Requires, } #[derive(Debug, Serialize, Deserialize)] pub struct Rpms<T> { pub rpms: T } #[derive(Debug, Serialize, Deserialize)] pub struct Profile { pub description: Option<String>, pub rpms: Vec<String>, } pub type Profiles = HashMap<String, Profile>; #[derive(Debug, Serialize, Deserialize)] pub struct Component { pub rationale: String, #[serde(rename = "ref")] pub reference: String, pub buildorder: Option<String>, #[serde(default)] pub arches: Vec<String>, #[serde(default)] pub multilib: Vec<String>, } #[derive(Debug, Serialize, Deserialize)] pub struct ModuleMDData { pub name: String, pub stream: String, pub version: u64, pub context: String, pub arch: String, pub summary: Option<String>, pub description: Option<String>, pub license: License, #[serde(default)] pub dependencies: Vec<Depencency>, pub profiles: Option<Profiles>, pub api: Option<Rpms<Vec<String>>>, pub components: Option<Rpms<HashMap<String, Component>>>, pub artifacts: Option<Rpms<Vec<String>>>, } #[derive(Debug, Serialize, Deserialize)] pub struct DefaultsData { pub module: String, pub stream: String, pub profiles: HashMap<String, Vec<String>>, }