@@ -32,6 +32,69 @@ pub struct ForgeVersionClassifier {
32
32
pub stash : Option < String > ,
33
33
}
34
34
35
+ pub enum ForgeVersionClassifierExtensions {
36
+ Txt ,
37
+ Zip ,
38
+ Jar ,
39
+ Stash ,
40
+ }
41
+
42
+ impl ForgeVersionClassifierExtensions {
43
+ pub fn as_str ( & self ) -> & ' static str {
44
+ match self {
45
+ ForgeVersionClassifierExtensions :: Txt => "txt" ,
46
+ ForgeVersionClassifierExtensions :: Zip => "zip" ,
47
+ ForgeVersionClassifierExtensions :: Jar => "jar" ,
48
+ ForgeVersionClassifierExtensions :: Stash => "stash" ,
49
+ }
50
+ }
51
+ }
52
+
53
+ pub struct ForgeVersionClassifierIter < ' a > {
54
+ classifier : & ' a ForgeVersionClassifier ,
55
+ index : usize ,
56
+ }
57
+
58
+ impl ForgeVersionClassifier {
59
+ pub fn iter ( & self ) -> ForgeVersionClassifierIter < ' _ > {
60
+ ForgeVersionClassifierIter {
61
+ classifier : & self ,
62
+ index : 0 ,
63
+ }
64
+ }
65
+ }
66
+
67
+ impl < ' a > Iterator for ForgeVersionClassifierIter < ' a > {
68
+ type Item = ( ForgeVersionClassifierExtensions , & ' a Option < String > ) ;
69
+
70
+ fn next ( & mut self ) -> Option < Self :: Item > {
71
+ let result = match self . index {
72
+ 0 => ( ForgeVersionClassifierExtensions :: Txt , & self . classifier . txt ) ,
73
+ 1 => ( ForgeVersionClassifierExtensions :: Zip , & self . classifier . zip ) ,
74
+ 2 => ( ForgeVersionClassifierExtensions :: Jar , & self . classifier . jar ) ,
75
+ 3 => (
76
+ ForgeVersionClassifierExtensions :: Stash ,
77
+ & self . classifier . stash ,
78
+ ) ,
79
+ _ => return None ,
80
+ } ;
81
+ self . index += 1 ;
82
+ Some ( result)
83
+ }
84
+ }
85
+
86
+ impl < ' a > IntoIterator for & ' a ForgeVersionClassifier {
87
+ type Item = ( ForgeVersionClassifierExtensions , & ' a Option < String > ) ;
88
+ type IntoIter = ForgeVersionClassifierIter < ' a > ;
89
+
90
+ fn into_iter ( self ) -> Self :: IntoIter {
91
+ ForgeVersionClassifierIter {
92
+ classifier : & self ,
93
+ index : 0 ,
94
+ }
95
+ }
96
+ }
97
+
35
98
#[ derive( Deserialize , Serialize , Clone , Debug , Validate ) ]
36
99
#[ skip_serializing_none]
37
100
#[ serde( deny_unknown_fields) ]
@@ -52,6 +115,132 @@ pub struct ForgeVersionClassifiers {
52
115
pub src_zip : Option < ForgeVersionClassifier > ,
53
116
}
54
117
118
+ pub enum ForgeVersionClassifierNames {
119
+ Changelog ,
120
+ Installer ,
121
+ Mdk ,
122
+ Universal ,
123
+ Userdev ,
124
+ Sources ,
125
+ Javadoc ,
126
+ Client ,
127
+ Src ,
128
+ Server ,
129
+ Launcher ,
130
+ Userdev3 ,
131
+ SrcZip ,
132
+ }
133
+
134
+ impl ForgeVersionClassifierNames {
135
+ pub fn as_str ( & self ) -> & ' static str {
136
+ match self {
137
+ ForgeVersionClassifierNames :: Changelog => "changelog" ,
138
+ ForgeVersionClassifierNames :: Installer => "installer" ,
139
+ ForgeVersionClassifierNames :: Mdk => "mdk" ,
140
+ ForgeVersionClassifierNames :: Universal => "universal" ,
141
+ ForgeVersionClassifierNames :: Userdev => "userdev" ,
142
+ ForgeVersionClassifierNames :: Sources => "sources" ,
143
+ ForgeVersionClassifierNames :: Javadoc => "javadoc" ,
144
+ ForgeVersionClassifierNames :: Client => "client" ,
145
+ ForgeVersionClassifierNames :: Src => "src" ,
146
+ ForgeVersionClassifierNames :: Server => "server" ,
147
+ ForgeVersionClassifierNames :: Launcher => "launcher" ,
148
+ ForgeVersionClassifierNames :: Userdev3 => "userdev3" ,
149
+ ForgeVersionClassifierNames :: SrcZip => "src.zip" ,
150
+ }
151
+ }
152
+ }
153
+
154
+ pub struct ForgeVersionClassifiersIter < ' a > {
155
+ classifiers : & ' a ForgeVersionClassifiers ,
156
+ index : usize ,
157
+ }
158
+
159
+ impl ForgeVersionClassifiers {
160
+ pub fn iter ( & self ) -> ForgeVersionClassifiersIter < ' _ > {
161
+ ForgeVersionClassifiersIter {
162
+ classifiers : & self ,
163
+ index : 0 ,
164
+ }
165
+ }
166
+ }
167
+
168
+ impl < ' a > IntoIterator for & ' a ForgeVersionClassifiers {
169
+ type Item = (
170
+ ForgeVersionClassifierNames ,
171
+ & ' a Option < ForgeVersionClassifier > ,
172
+ ) ;
173
+ type IntoIter = ForgeVersionClassifiersIter < ' a > ;
174
+
175
+ fn into_iter ( self ) -> Self :: IntoIter {
176
+ ForgeVersionClassifiersIter {
177
+ classifiers : & self ,
178
+ index : 0 ,
179
+ }
180
+ }
181
+ }
182
+
183
+ impl < ' a > Iterator for ForgeVersionClassifiersIter < ' a > {
184
+ type Item = (
185
+ ForgeVersionClassifierNames ,
186
+ & ' a Option < ForgeVersionClassifier > ,
187
+ ) ;
188
+
189
+ fn next ( & mut self ) -> Option < Self :: Item > {
190
+ let result = match self . index {
191
+ 0 => (
192
+ ForgeVersionClassifierNames :: Changelog ,
193
+ & self . classifiers . changelog ,
194
+ ) ,
195
+ 1 => (
196
+ ForgeVersionClassifierNames :: Installer ,
197
+ & self . classifiers . installer ,
198
+ ) ,
199
+ 2 => ( ForgeVersionClassifierNames :: Mdk , & self . classifiers . mdk ) ,
200
+ 3 => (
201
+ ForgeVersionClassifierNames :: Universal ,
202
+ & self . classifiers . universal ,
203
+ ) ,
204
+ 4 => (
205
+ ForgeVersionClassifierNames :: Userdev ,
206
+ & self . classifiers . userdev ,
207
+ ) ,
208
+ 5 => (
209
+ ForgeVersionClassifierNames :: Sources ,
210
+ & self . classifiers . sources ,
211
+ ) ,
212
+ 6 => (
213
+ ForgeVersionClassifierNames :: Javadoc ,
214
+ & self . classifiers . javadoc ,
215
+ ) ,
216
+ 7 => (
217
+ ForgeVersionClassifierNames :: Client ,
218
+ & self . classifiers . client ,
219
+ ) ,
220
+ 8 => ( ForgeVersionClassifierNames :: Src , & self . classifiers . src ) ,
221
+ 9 => (
222
+ ForgeVersionClassifierNames :: Server ,
223
+ & self . classifiers . server ,
224
+ ) ,
225
+ 10 => (
226
+ ForgeVersionClassifierNames :: Launcher ,
227
+ & self . classifiers . launcher ,
228
+ ) ,
229
+ 11 => (
230
+ ForgeVersionClassifierNames :: Userdev3 ,
231
+ & self . classifiers . userdev3 ,
232
+ ) ,
233
+ 12 => (
234
+ ForgeVersionClassifierNames :: SrcZip ,
235
+ & self . classifiers . src_zip ,
236
+ ) ,
237
+ _ => return None ,
238
+ } ;
239
+ self . index += 1 ;
240
+ Some ( result)
241
+ }
242
+ }
243
+
55
244
#[ derive( Deserialize , Serialize , Clone , Debug , Validate ) ]
56
245
#[ skip_serializing_none]
57
246
#[ serde( deny_unknown_fields) ]
@@ -332,7 +521,7 @@ impl ForgeFile {
332
521
}
333
522
334
523
#[ skip_serializing_none]
335
- #[ derive( Deserialize , Serialize , Clone , Debug , Validate , Merge ) ]
524
+ #[ derive( Deserialize , Serialize , Clone , Debug , Validate , Merge , Default ) ]
336
525
pub struct ForgeEntry {
337
526
#[ serde( rename = "longversion" ) ]
338
527
#[ merge( strategy = merge:: overwrite) ]
@@ -343,7 +532,7 @@ pub struct ForgeEntry {
343
532
#[ merge( strategy = merge:: overwrite) ]
344
533
pub version : String ,
345
534
#[ merge( strategy = merge:: overwrite) ]
346
- pub build : i64 ,
535
+ pub build : i32 ,
347
536
pub branch : Option < String > ,
348
537
pub latest : Option < bool > ,
349
538
pub recommended : Option < bool > ,
@@ -352,15 +541,15 @@ pub struct ForgeEntry {
352
541
}
353
542
354
543
#[ skip_serializing_none]
355
- #[ derive( Deserialize , Serialize , Clone , Debug , Validate , Merge ) ]
544
+ #[ derive( Deserialize , Serialize , Clone , Debug , Validate , Merge , Default ) ]
356
545
pub struct ForgeMCVersionInfo {
357
546
pub latest : Option < String > ,
358
547
pub recommended : Option < String > ,
359
548
#[ merge( strategy = merge:: vec:: append) ]
360
549
pub versions : Vec < String > ,
361
550
}
362
551
363
- #[ derive( Deserialize , Serialize , Clone , Debug , Validate , Merge ) ]
552
+ #[ derive( Deserialize , Serialize , Clone , Debug , Validate , Merge , Default ) ]
364
553
pub struct DerivedForgeIndex {
365
554
#[ merge( strategy = merge:: hashmap:: recurse) ]
366
555
pub versions : HashMap < String , ForgeEntry > ,
0 commit comments