Skip to content

Commit 2d39b4a

Browse files
committed
Add rustfmt hook script, allow for raw Mojang querying
1 parent 7e33139 commit 2d39b4a

File tree

10 files changed

+292
-53
lines changed

10 files changed

+292
-53
lines changed

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,16 @@ under GPL-3.0-only.
2828
Eventually, mcmeta should implement at least the following goals:
2929

3030
- [ ] Fetching metadata
31-
- [ ] Minecraft
31+
- [x] Minecraft
3232
- [ ] Forge
3333
- [ ] Liteloader
3434
- [ ] Fabric
3535
- [ ] Quilt
3636
- Storing metadata
37-
- [ ] JSON
37+
- [x] JSON
3838
- [ ] Database
3939
- [ ] Offering metadata
40-
- [ ] Minecraft
40+
- [x] Minecraft
4141
- [ ] Forge
4242
- [ ] Liteloader
4343
- [ ] Fabric

libmcmeta/src/lib.rs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,4 @@ extern crate custom_error;
33
#[macro_use]
44
extern crate lazy_static;
55

6-
lazy_static! {
7-
8-
}
9-
10-
mod validations;
11-
pub mod models;
6+
pub mod models;

libmcmeta/src/models/mod.rs

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
use std::{str::FromStr, fmt::Display};
1+
use std::{fmt::Display, str::FromStr};
22

3-
use serde::{Serialize, Deserialize};
3+
use serde::{Deserialize, Serialize};
44

55
pub mod mojang;
66

@@ -9,7 +9,7 @@ custom_error! { pub ModelError
99
}
1010

1111
/// A Gradle specifier.
12-
#[derive(Debug, PartialEq, Clone)]
12+
#[derive(Debug, PartialEq, Eq, Clone)]
1313
pub struct GradleSpecifier {
1414
/// Group of the artifact.
1515
pub group: String,
@@ -48,7 +48,7 @@ impl GradleSpecifier {
4848
pub fn base(&self) -> String {
4949
format!(
5050
"{}/{}/{}",
51-
self.group.replace(".", "/"),
51+
self.group.replace('.', "/"),
5252
self.artifact,
5353
self.version
5454
)
@@ -91,7 +91,7 @@ impl FromStr for GradleSpecifier {
9191
.collect::<Vec<&str>>();
9292

9393
let group = components
94-
.get(0)
94+
.first()
9595
.ok_or(ModelError::InvalidGradleSpecifier {
9696
specifier: s.to_string(),
9797
})?
@@ -114,19 +114,18 @@ impl FromStr for GradleSpecifier {
114114
extension = Some(at_split[1].to_string());
115115
}
116116

117-
let classifier: Option<String>;
118-
if components.len() == 4 {
119-
classifier = Some(
117+
let classifier = if components.len() == 4 {
118+
Some(
120119
components
121120
.get(3)
122121
.ok_or(ModelError::InvalidGradleSpecifier {
123122
specifier: s.to_string(),
124123
})?
125124
.to_string(),
126-
);
125+
)
127126
} else {
128-
classifier = None;
129-
}
127+
None
128+
};
130129

131130
Ok(GradleSpecifier {
132131
group,
@@ -183,4 +182,4 @@ impl<'de> Deserialize<'de> for GradleSpecifier {
183182
let s = String::deserialize(deserializer)?;
184183
s.parse().map_err(serde::de::Error::custom)
185184
}
186-
}
185+
}

libmcmeta/src/models/mojang.rs

Lines changed: 31 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
use serde::Deserialize;
1+
use serde::{Deserialize, Serialize};
22

3-
#[derive(Deserialize, Debug)]
3+
#[derive(Deserialize, Serialize, Debug)]
44
#[serde(rename_all = "camelCase")]
55
pub struct MojangVersionManifest {
66
/// The latest version of Minecraft.
@@ -10,7 +10,7 @@ pub struct MojangVersionManifest {
1010
}
1111

1212
/// The latest version of Minecraft.
13-
#[derive(Deserialize, Debug)]
13+
#[derive(Deserialize, Serialize, Debug)]
1414
#[serde(rename_all = "camelCase")]
1515
pub struct MojangVersionManifestLatest {
1616
/// The latest release version of Minecraft.
@@ -20,7 +20,7 @@ pub struct MojangVersionManifestLatest {
2020
}
2121

2222
/// A version of Minecraft.
23-
#[derive(Deserialize, Debug)]
23+
#[derive(Deserialize, Serialize, Debug)]
2424
#[serde(rename_all = "camelCase")]
2525
pub struct MojangVersionManifestVersion {
2626
/// The ID of the version.
@@ -38,7 +38,7 @@ pub struct MojangVersionManifestVersion {
3838
pub compliance_level: i32,
3939
}
4040

41-
#[derive(Deserialize, Debug)]
41+
#[derive(Deserialize, Serialize, Debug)]
4242
#[serde(rename_all = "camelCase")]
4343
pub struct AssetIndex {
4444
pub id: String,
@@ -48,29 +48,29 @@ pub struct AssetIndex {
4848
pub url: String,
4949
}
5050

51-
#[derive(Deserialize, Debug)]
51+
#[derive(Deserialize, Serialize, Debug)]
5252
#[serde(rename_all = "camelCase")]
5353
pub struct VersionDownload {
5454
pub sha1: String,
5555
pub size: i32,
5656
pub url: String,
5757
}
5858

59-
#[derive(Deserialize, Debug)]
59+
#[derive(Deserialize, Serialize, Debug)]
6060
#[serde(rename_all = "camelCase")]
6161
pub struct VersionDownloads {
6262
pub client: VersionDownload,
6363
pub server: Option<VersionDownload>,
6464
}
6565

66-
#[derive(Deserialize, Debug)]
66+
#[derive(Deserialize, Serialize, Debug)]
6767
#[serde(rename_all = "camelCase")]
6868
pub struct JavaVersion {
6969
pub component: String,
7070
pub major_version: i32,
7171
}
7272

73-
#[derive(Deserialize, Debug)]
73+
#[derive(Deserialize, Serialize, Debug)]
7474
#[serde(rename_all = "camelCase")]
7575
pub struct VersionLibraryDownloadInfo {
7676
pub path: String,
@@ -79,7 +79,7 @@ pub struct VersionLibraryDownloadInfo {
7979
pub url: String,
8080
}
8181

82-
#[derive(Deserialize, Debug)]
82+
#[derive(Deserialize, Serialize, Debug)]
8383
#[serde(rename_all = "camelCase")]
8484
pub struct VersionLibraryClassifiers {
8585
pub javadoc: Option<VersionLibraryDownloadInfo>,
@@ -92,28 +92,28 @@ pub struct VersionLibraryClassifiers {
9292
pub sources: Option<VersionLibraryDownloadInfo>,
9393
}
9494

95-
#[derive(Deserialize, Debug)]
95+
#[derive(Deserialize, Serialize, Debug)]
9696
#[serde(rename_all = "camelCase")]
9797
pub struct VersionLibraryNatives {
9898
pub linux: Option<String>,
9999
pub osx: Option<String>,
100100
pub windows: Option<String>,
101101
}
102102

103-
#[derive(Deserialize, Debug)]
103+
#[derive(Deserialize, Serialize, Debug)]
104104
#[serde(rename_all = "camelCase")]
105105
pub struct VersionLibraryDownloads {
106106
pub artifact: Option<VersionLibraryDownloadInfo>,
107107
pub classifiers: Option<VersionLibraryClassifiers>,
108108
}
109109

110-
#[derive(Deserialize, Debug)]
110+
#[derive(Deserialize, Serialize, Debug)]
111111
#[serde(rename_all = "camelCase")]
112112
pub struct VersionLibraryExtract {
113113
pub exclude: Vec<String>,
114114
}
115115

116-
#[derive(Deserialize, Debug)]
116+
#[derive(Deserialize, Serialize, Debug)]
117117
#[serde(rename_all = "camelCase")]
118118
pub struct VersionLibrary {
119119
pub name: String,
@@ -123,36 +123,36 @@ pub struct VersionLibrary {
123123
pub rules: Option<Vec<ManifestRule>>,
124124
}
125125

126-
#[derive(Deserialize, Debug)]
126+
#[derive(Deserialize, Serialize, Debug)]
127127
#[serde(rename_all = "camelCase")]
128128
pub struct ManifestRule {
129129
pub action: String,
130130
pub os: Option<ManifestRuleOS>,
131131
pub features: Option<ManifestRuleFeatures>,
132132
}
133133

134-
#[derive(Deserialize, Debug)]
134+
#[derive(Deserialize, Serialize, Debug)]
135135
#[serde(rename_all = "camelCase")]
136136
pub struct ManifestRuleFeatures {
137137
pub is_demo_user: Option<bool>,
138138
pub has_custom_resolution: Option<bool>,
139139
}
140140

141-
#[derive(Deserialize, Debug)]
141+
#[derive(Deserialize, Serialize, Debug)]
142142
#[serde(rename_all = "camelCase")]
143143
pub struct ManifestRuleOS {
144144
pub name: Option<String>,
145145
pub version: Option<String>,
146146
pub arch: Option<String>,
147147
}
148148

149-
#[derive(Deserialize, Debug)]
149+
#[derive(Deserialize, Serialize, Debug)]
150150
#[serde(rename_all = "camelCase")]
151151
pub struct VersionLogging {
152152
pub client: VersionLoggingClient,
153153
}
154154

155-
#[derive(Deserialize, Debug)]
155+
#[derive(Deserialize, Serialize, Debug)]
156156
#[serde(rename_all = "camelCase")]
157157
pub struct VersionLoggingClient {
158158
pub argument: String,
@@ -161,7 +161,7 @@ pub struct VersionLoggingClient {
161161
pub logging_type: String,
162162
}
163163

164-
#[derive(Deserialize, Debug)]
164+
#[derive(Deserialize, Serialize, Debug)]
165165
#[serde(rename_all = "camelCase")]
166166
pub struct VersionLoggingClientFile {
167167
pub id: String,
@@ -170,35 +170,35 @@ pub struct VersionLoggingClientFile {
170170
pub url: String,
171171
}
172172

173-
#[derive(Deserialize, Debug)]
173+
#[derive(Deserialize, Serialize, Debug)]
174174
#[serde(untagged)]
175175
pub enum VersionArgument {
176176
String(String),
177177
Object(VersionArgumentObject),
178178
}
179179

180-
#[derive(Deserialize, Debug)]
180+
#[derive(Deserialize, Serialize, Debug)]
181181
#[serde(untagged)]
182182
pub enum VersionArgumentValue {
183183
String(String),
184184
Array(Vec<String>),
185185
}
186186

187-
#[derive(Deserialize, Debug)]
187+
#[derive(Deserialize, Serialize, Debug)]
188188
#[serde(rename_all = "camelCase")]
189189
pub struct VersionArgumentObject {
190190
pub rules: Vec<ManifestRule>,
191191
pub value: VersionArgumentValue,
192192
}
193193

194-
#[derive(Deserialize, Debug)]
194+
#[derive(Deserialize, Serialize, Debug)]
195195
#[serde(rename_all = "camelCase")]
196196
pub struct VersionArguments {
197197
pub game: Vec<VersionArgument>,
198198
pub jvm: Vec<VersionArgument>,
199199
}
200200

201-
#[derive(Deserialize, Debug)]
201+
#[derive(Deserialize, Serialize, Debug)]
202202
#[serde(rename_all = "camelCase")]
203203
pub struct MinecraftVersion {
204204
pub asset_index: AssetIndex,
@@ -244,9 +244,13 @@ mod tests {
244244
&std::fs::read_to_string(path).unwrap(),
245245
);
246246
if let Err(e) = version {
247-
panic!("Failed to deserialize version {}: {:?}", entry.file_name().to_str().unwrap(), e);
247+
panic!(
248+
"Failed to deserialize version {}: {:?}",
249+
entry.file_name().to_str().unwrap(),
250+
e
251+
);
248252
}
249253
}
250254
}
251255
}
252-
}
256+
}

libmcmeta/src/validations.rs

Lines changed: 0 additions & 3 deletions
This file was deleted.

mcmeta/Cargo.toml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,16 @@ edition = "2021"
66
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
77

88
[dependencies]
9+
axum = "0.5.17"
910
clap = "4.0.18"
1011
config = "0.13.2"
12+
custom_error = "1.9.2"
1113
git2 = "0.15.0"
14+
hyper = "0.14.20"
1215
libmcmeta = { path = "../libmcmeta" }
16+
reqwest = { version = "0.11.12", features = ["json"] }
17+
serde = { version = "1.0.147", features = ["derive"] }
18+
serde_json = "1.0.87"
1319
tokio = { version = "1.21.2", features = ["full"] }
20+
tracing = "0.1.37"
21+
tracing-subscriber = { version = "0.3.16", features = ["env-filter"] }

mcmeta/src/download/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
pub mod mojang;

0 commit comments

Comments
 (0)