@@ -183,6 +183,14 @@ pub enum SpecRecipe {
183
183
V0Package ( super :: v0:: Spec < VersionIdent > ) ,
184
184
}
185
185
186
+ impl SpecRecipe {
187
+ pub fn api_version ( & self ) -> RecipeApiVersion {
188
+ match self {
189
+ Self :: V0Package ( _) => RecipeApiVersion :: V0Package ,
190
+ }
191
+ }
192
+ }
193
+
186
194
impl Recipe for SpecRecipe {
187
195
type Output = Spec ;
188
196
@@ -279,8 +287,8 @@ impl FromYaml for SpecRecipe {
279
287
// fairly generic, eg: 'expected struct YamlMapping'
280
288
#[ derive( Deserialize ) ]
281
289
struct YamlMapping {
282
- #[ serde( default = "ApiVersion ::default" ) ]
283
- api : ApiVersion ,
290
+ #[ serde( default = "RecipeApiVersion ::default" ) ]
291
+ api : RecipeApiVersion ,
284
292
}
285
293
286
294
let with_version = match serde_yaml:: from_str :: < YamlMapping > ( & yaml) {
@@ -292,7 +300,7 @@ impl FromYaml for SpecRecipe {
292
300
} ;
293
301
294
302
match with_version. api {
295
- ApiVersion :: V0Package => {
303
+ RecipeApiVersion :: V0Package => {
296
304
let inner =
297
305
serde_yaml:: from_str ( & yaml) . map_err ( |err| SerdeError :: new ( yaml, err) ) ?;
298
306
Ok ( Self :: V0Package ( inner) )
@@ -313,6 +321,14 @@ pub enum Spec {
313
321
V0Package ( super :: v0:: Spec < BuildIdent > ) ,
314
322
}
315
323
324
+ impl Spec {
325
+ pub fn api_version ( & self ) -> PackageApiVersion {
326
+ match self {
327
+ Self :: V0Package ( _) => PackageApiVersion :: V0Package ,
328
+ }
329
+ }
330
+ }
331
+
316
332
impl Satisfy < PkgRequest > for Spec {
317
333
fn check_satisfies_request ( & self , request : & PkgRequest ) -> Compatibility {
318
334
match self {
@@ -452,8 +468,8 @@ impl FromYaml for Spec {
452
468
// fairly generic, eg: 'expected struct YamlMapping'
453
469
#[ derive( Deserialize ) ]
454
470
struct YamlMapping {
455
- #[ serde( default = "ApiVersion ::default" ) ]
456
- api : ApiVersion ,
471
+ #[ serde( default = "PackageApiVersion ::default" ) ]
472
+ api : PackageApiVersion ,
457
473
}
458
474
459
475
let with_version = match serde_yaml:: from_str :: < YamlMapping > ( & yaml) {
@@ -465,7 +481,7 @@ impl FromYaml for Spec {
465
481
} ;
466
482
467
483
match with_version. api {
468
- ApiVersion :: V0Package => {
484
+ PackageApiVersion :: V0Package => {
469
485
let inner =
470
486
serde_yaml:: from_str ( & yaml) . map_err ( |err| SerdeError :: new ( yaml, err) ) ?;
471
487
Ok ( Self :: V0Package ( inner) )
@@ -480,14 +496,28 @@ impl AsRef<Spec> for Spec {
480
496
}
481
497
}
482
498
483
- #[ derive( Deserialize , Serialize , Copy , Clone ) ]
484
- pub enum ApiVersion {
499
+ #[ derive( Default , Debug , Deserialize , Serialize , Copy , Clone ) ]
500
+ pub enum RecipeApiVersion {
501
+ #[ default]
502
+ #[ serde( rename = "v0/package" ) ]
503
+ V0Package ,
504
+ }
505
+
506
+ impl RecipeApiVersion {
507
+ pub fn is_stable ( & self ) -> bool {
508
+ matches ! ( self , Self :: V0Package )
509
+ }
510
+ }
511
+
512
+ #[ derive( Default , Debug , Deserialize , Serialize , Copy , Clone ) ]
513
+ pub enum PackageApiVersion {
514
+ #[ default]
485
515
#[ serde( rename = "v0/package" ) ]
486
516
V0Package ,
487
517
}
488
518
489
- impl Default for ApiVersion {
490
- fn default ( ) -> Self {
491
- Self :: V0Package
519
+ impl PackageApiVersion {
520
+ pub fn is_stable ( & self ) -> bool {
521
+ matches ! ( self , Self :: V0Package )
492
522
}
493
523
}
0 commit comments