@@ -95,20 +95,22 @@ fn parseCrates(f: &File) -> BTreeMap<Vec<u32>,MyCrate>{
95
95
Err ( err) => { println ! ( "ERROR while parsing a crate: {}" , err) ; continue } ,
96
96
} ;
97
97
98
- if next_crate. vers . contains ( "-" ) {
98
+ // if next_crate.vers.contains("-"){
99
99
//skip beta versions
100
- continue ;
101
- }
100
+ // continue;
101
+ // }
102
102
103
103
//remove everything after an `+` since those vallues can be ignored for versioning
104
+ //remove everything after an `-` those versions are unstable pre-release versions.
105
+ //we allow them but only ceep the latest.
104
106
let prep_for_split = next_crate. vers . clone ( ) ;
105
- let split: Vec < & str > = prep_for_split. split ( "+" ) . collect ( ) ;
107
+ let split: Vec < & str > = prep_for_split. split ( & [ '+' , '-' ] [ .. ] ) . collect ( ) ;
106
108
let v: & str = split[ 0 ] ;
107
109
next_crate. vers = v. to_string ( ) ;
108
110
109
111
let version = convert_version ( & next_crate. vers ) ;
110
- //check if this is the first valid version else it will be discarded
111
- all_versions. entry ( version) . or_insert ( next_crate) ;
112
+ //insert the latest version, discard the previous value (if there is one)
113
+ all_versions. insert ( version, next_crate) ;
112
114
}
113
115
return all_versions;
114
116
}
@@ -266,12 +268,6 @@ fn main() {
266
268
// write!(packages, "\n\"{}\" = all__{}.\"{}\";", package_name, name, package_name);
267
269
268
270
let full_version = "_" . to_string ( ) + & prev_version[ 0 ] . to_string ( ) + "_" + & prev_version[ 1 ] . to_string ( ) + "_" + & prev_version[ 2 ] . to_string ( ) ;
269
- if prev_version[ 1 ] < version[ 1 ] {
270
- let smal_version = "_" . to_string ( ) + & prev_version[ 0 ] . to_string ( ) + "_" + & prev_version[ 1 ] . to_string ( ) ;
271
- let package_name = prev. name . clone ( ) + & smal_version;
272
- // write!(packages, "\n\"{}\" = all__{}.\"{}\";", package_name, name, prev.name.clone() + &full_version);
273
- write ! ( buffer, "\n \" {}\" = {};" , package_name, prev. name. clone( ) + & full_version) ;
274
- }
275
271
276
272
if prev_version[ 0 ] < version[ 0 ] {
277
273
let smal_version = "_" . to_string ( ) + & prev_version[ 0 ] . to_string ( ) + "_" + & prev_version[ 1 ] . to_string ( ) ;
@@ -281,10 +277,16 @@ fn main() {
281
277
282
278
let smal_version = "_" . to_string ( ) + & prev_version[ 0 ] . to_string ( ) ;
283
279
let package_name = prev. name . clone ( ) + & smal_version;
280
+ // write!(packages, "\n\"{}\" = all__{}.\"{}\";", package_name, name, prev.name.clone() + &full_version);
281
+ write ! ( buffer, "\n \" {}\" = {};" , package_name, prev. name. clone( ) + & full_version) ;
282
+ } else if prev_version[ 1 ] < version[ 1 ] {
283
+ let smal_version = "_" . to_string ( ) + & prev_version[ 0 ] . to_string ( ) + "_" + & prev_version[ 1 ] . to_string ( ) ;
284
+ let package_name = prev. name . clone ( ) + & smal_version;
284
285
// write!(packages, "\n\"{}\" = all__{}.\"{}\";", package_name, name, prev.name.clone() + &full_version);
285
286
write ! ( buffer, "\n \" {}\" = {};" , package_name, prev. name. clone( ) + & full_version) ;
286
287
}
287
288
289
+
288
290
prev_version = version. clone ( ) ;
289
291
prev = c. clone ( ) ;
290
292
}
0 commit comments