@@ -17,14 +17,14 @@ use std::{
17
17
18
18
use nickel_lang_core:: { identifier:: Ident , package:: ObjectId } ;
19
19
use nickel_lang_git:: Spec ;
20
- use pubgrub:: version:: SemanticVersion ;
21
20
use regex:: Regex ;
22
21
use serde:: { Deserialize , Serialize } ;
23
22
use tempfile:: { tempdir_in, NamedTempFile } ;
24
23
25
24
use crate :: {
26
25
config:: Config ,
27
26
error:: { Error , IoResultExt as _} ,
27
+ version:: SemVer ,
28
28
Precise , VersionReq ,
29
29
} ;
30
30
@@ -79,7 +79,11 @@ impl PackageCache {
79
79
let data = std:: fs:: read_to_string ( & path) . with_path ( & path) ?;
80
80
for line in data. lines ( ) {
81
81
let package: Package = serde_json:: from_str ( line) . unwrap ( ) ;
82
- if file. packages . insert ( package. vers , package) . is_some ( ) {
82
+ if file
83
+ . packages
84
+ . insert ( package. vers . clone ( ) , package)
85
+ . is_some ( )
86
+ {
83
87
panic ! ( "duplicate version, index is corrupt" ) ;
84
88
}
85
89
}
@@ -97,12 +101,12 @@ impl PackageCache {
97
101
/// (Also retains a cached copy in memory.)
98
102
pub fn save ( & mut self , pkg : Package ) -> Result < ( ) , Error > {
99
103
let id: Id = pkg. id . clone ( ) . into ( ) ;
100
- let version = pkg. vers ;
104
+ let version = pkg. vers . clone ( ) ;
101
105
let mut existing = self
102
106
. load ( & id) ?
103
107
. cloned ( )
104
108
. unwrap_or ( CachedPackageFile :: default ( ) ) ;
105
- if existing. packages . insert ( pkg. vers , pkg) . is_some ( ) {
109
+ if existing. packages . insert ( pkg. vers . clone ( ) , pkg) . is_some ( ) {
106
110
return Err ( Error :: DuplicateIndexPackageVersion { id, version } ) ;
107
111
}
108
112
let mut tmp = self . tmp_file ( & id) ;
@@ -172,7 +176,7 @@ impl PackageIndex {
172
176
pub fn available_versions < ' a > (
173
177
& ' a self ,
174
178
id : & Id ,
175
- ) -> Result < impl Iterator < Item = SemanticVersion > + ' a , Error > {
179
+ ) -> Result < impl Iterator < Item = SemVer > + ' a , Error > {
176
180
let mut cache = self . cache . borrow_mut ( ) ;
177
181
let pkg_file = cache. load ( id) ?;
178
182
let versions: Vec < _ > = pkg_file
@@ -181,31 +185,31 @@ impl PackageIndex {
181
185
Ok ( versions. into_iter ( ) )
182
186
}
183
187
184
- pub fn all_versions ( & self , id : & Id ) -> Result < HashMap < SemanticVersion , Package > , Error > {
188
+ pub fn all_versions ( & self , id : & Id ) -> Result < HashMap < SemVer , Package > , Error > {
185
189
let mut cache = self . cache . borrow_mut ( ) ;
186
190
let pkg_file = cache. load ( id) ?;
187
191
Ok ( pkg_file
188
192
. map ( |pkg_file| {
189
193
pkg_file
190
194
. packages
191
195
. iter ( )
192
- . map ( |( v, package) | ( * v , package. clone ( ) ) )
196
+ . map ( |( v, package) | ( v . clone ( ) , package. clone ( ) ) )
193
197
. collect ( )
194
198
} )
195
199
. unwrap_or_default ( ) )
196
200
}
197
201
198
- pub fn package ( & self , id : & Id , v : SemanticVersion ) -> Result < Option < Package > , Error > {
202
+ pub fn package ( & self , id : & Id , v : SemVer ) -> Result < Option < Package > , Error > {
199
203
Ok ( self . all_versions ( id) ?. get ( & v) . cloned ( ) )
200
204
}
201
205
202
206
pub fn save ( & mut self , pkg : Package ) -> Result < ( ) , Error > {
203
207
self . cache . borrow_mut ( ) . save ( pkg)
204
208
}
205
209
206
- pub fn ensure_downloaded ( & self , id : & Id , v : SemanticVersion ) -> Result < ( ) , Error > {
210
+ pub fn ensure_downloaded ( & self , id : & Id , v : SemVer ) -> Result < ( ) , Error > {
207
211
let package = self
208
- . package ( id, v) ?
212
+ . package ( id, v. clone ( ) ) ?
209
213
. ok_or_else ( || Error :: UnknownIndexPackage { id : id. clone ( ) } ) ?;
210
214
let precise = Precise :: Index {
211
215
id : id. clone ( ) ,
@@ -371,15 +375,15 @@ impl From<PreciseId> for Id {
371
375
372
376
#[ derive( Clone , Debug , Default ) ]
373
377
pub struct CachedPackageFile {
374
- pub packages : BTreeMap < SemanticVersion , Package > ,
378
+ pub packages : BTreeMap < SemVer , Package > ,
375
379
}
376
380
377
381
/// A package record in the index.
378
382
#[ derive( Clone , Debug , Serialize , Deserialize ) ]
379
383
pub struct Package {
380
384
pub id : PreciseId ,
381
- pub vers : SemanticVersion ,
382
- pub nickel_vers : SemanticVersion ,
385
+ pub vers : SemVer ,
386
+ pub nickel_vers : SemVer ,
383
387
pub deps : BTreeMap < Ident , IndexDependency > ,
384
388
385
389
/// Version of the index schema. Currently always zero.
0 commit comments