Skip to content

Commit c8c0180

Browse files
authored
Merge pull request #824 from dtolnay-contrib/versionmeta
2 parents 6f99f90 + a76a4f4 commit c8c0180

File tree

3 files changed

+18
-8
lines changed

3 files changed

+18
-8
lines changed

top-crates/Cargo.lock

Lines changed: 3 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

top-crates/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ repository = "https://github.com/integer32llc/rust-playground"
1212
cargo = "0.62.0"
1313
itertools = "0.10.0"
1414
reqwest = { version = "0.11.0", features = ["blocking"] }
15+
semver = { version = "1.0.11", features = ["serde"] }
1516
serde = "1.0.1"
1617
serde_derive = "1.0.1"
1718
serde_json = "1.0.0"

top-crates/src/lib.rs

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ use cargo::{
1313
util::{Config, VersionExt},
1414
};
1515
use itertools::Itertools;
16+
use semver::Version;
1617
use serde::{Deserialize, Serialize};
1718
use std::{
1819
collections::{BTreeMap, BTreeSet, HashSet},
@@ -39,7 +40,7 @@ struct Crate {
3940
#[derive(Debug, Serialize)]
4041
pub struct CrateInformation {
4142
pub name: String,
42-
pub version: String,
43+
pub version: Version,
4344
pub id: String,
4445
}
4546

@@ -58,18 +59,25 @@ pub struct DependencySpec {
5859
#[serde(skip_serializing_if = "String::is_empty")]
5960
pub package: String,
6061
#[serde(serialize_with = "exact_version")]
61-
pub version: String,
62+
pub version: Version,
6263
#[serde(skip_serializing_if = "Vec::is_empty")]
6364
pub features: Vec<String>,
6465
#[serde(skip_serializing_if = "is_true")]
6566
pub default_features: bool,
6667
}
6768

68-
fn exact_version<S>(version: &String, serializer: S) -> Result<S::Ok, S::Error>
69+
fn exact_version<S>(version: &Version, serializer: S) -> Result<S::Ok, S::Error>
6970
where
7071
S: serde::Serializer,
7172
{
72-
format!("={}", version).serialize(serializer)
73+
semver::Comparator {
74+
op: semver::Op::Exact,
75+
major: version.major,
76+
minor: Some(version.minor),
77+
patch: Some(version.patch),
78+
pre: version.pre.clone(),
79+
}
80+
.serialize(serializer)
7381
}
7482

7583
fn is_true(b: &bool) -> bool {
@@ -385,15 +393,15 @@ pub fn generate_info(
385393
exposed_name.clone(),
386394
DependencySpec {
387395
package: name.to_string(),
388-
version: version.to_string(),
396+
version: version.clone(),
389397
features,
390398
default_features,
391399
},
392400
);
393401

394402
infos.push(CrateInformation {
395403
name: name.to_string(),
396-
version: version.to_string(),
404+
version: version.clone(),
397405
id: exposed_name,
398406
});
399407

0 commit comments

Comments
 (0)