mc_launchermeta/version/
library.rs1use std::collections::BTreeMap;
11
12use serde::{Deserialize, Serialize};
13
14use crate::version::rule::Rule;
15
16#[derive(Debug, Clone, Eq, PartialEq, Hash, Serialize, Deserialize)]
17#[serde(deny_unknown_fields)]
18pub struct Artifact {
19 pub path: String,
20 pub sha1: String,
21 pub size: u64,
22 pub url: String,
23}
24
25#[derive(Debug, Clone, Eq, PartialEq, Hash, Serialize, Deserialize)]
26#[serde(deny_unknown_fields)]
27pub struct Downloads {
28 #[serde(default)]
29 pub artifact: Option<Artifact>,
30 #[serde(default)]
31 pub classifiers: Option<BTreeMap<String, Artifact>>,
32}
33
34#[derive(Debug, Clone, Eq, PartialEq, Hash, Serialize, Deserialize)]
35pub struct Natives {
36 pub linux: Option<String>,
37 pub osx: Option<String>,
38 pub windows: Option<String>,
39}
40
41pub type Extract = BTreeMap<String, Vec<String>>;
42
43#[derive(Debug, Clone, Eq, PartialEq, Hash, Serialize, Deserialize)]
44#[serde(deny_unknown_fields)]
45pub struct Library {
46 pub downloads: Option<Downloads>,
48 pub name: String,
50 #[serde(default)]
54 pub extract: Option<Extract>,
55 #[serde(default)]
59 pub natives: Option<Natives>,
60 #[serde(default)]
61 pub rules: Option<Vec<Rule>>,
62}