Skip to content

Commit 4ea3dee

Browse files
committed
fix
1 parent 3f5e0cc commit 4ea3dee

File tree

2 files changed

+26
-29
lines changed

2 files changed

+26
-29
lines changed

src/db/add_package.rs

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use crate::{
77
error::Result,
88
registry_api::{CrateData, CrateOwner, ReleaseData},
99
storage::CompressionAlgorithm,
10-
utils::{MetadataPackage, rustc_version::parse_rustc_date},
10+
utils::{cargo_metadata::PackageExt, rustc_version::parse_rustc_date},
1111
web::crate_details::{latest_release, releases_for_crate},
1212
};
1313
use anyhow::{Context, anyhow};
@@ -1301,13 +1301,4 @@ mod test {
13011301
Ok(())
13021302
})
13031303
}
1304-
1305-
#[test_case("[]")]
1306-
#[test_case(r#"[["rand", "^0.9", "normal", false], ["sdl3", "^0.16", "normal", false]]"#)]
1307-
#[test_case(r#"[["vec_map", "^0.0.1", "normal", false]]"#)]
1308-
#[test_case(r#"[["byteorder","^0.5"],["clippy","^0"],["num","^0.1"],["quickcheck","^0.2"]]"#)]
1309-
fn test_parse_release_dependency_json(input: &str) -> Result<()> {
1310-
let deps: Vec<ReleaseDependency> = serde_json::from_str(input)?;
1311-
Ok(())
1312-
}
13131304
}

src/db/types/dependencies.rs

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
1-
use crate::utils::Dependency;
1+
use cargo_metadata::{Dependency, DependencyBuilder, DependencyKind};
22
use derive_more::Deref;
33
use semver::VersionReq;
44
use serde::{Deserialize, Serialize};
55

6-
const DEFAULT_KIND: &str = "normal";
7-
86
/// The three possible representations of a dependency in our internal JSON format
97
/// in the `releases.dependencies` column.
108
#[derive(Debug, Clone, Serialize, Deserialize)]
119
#[serde(untagged)]
1210
enum Dep {
1311
Two((String, VersionReq)),
14-
Three((String, VersionReq, String)),
15-
Four((String, VersionReq, String, bool)),
12+
Three((String, VersionReq, DependencyKind)),
13+
Four((String, VersionReq, DependencyKind, bool)),
1614
}
1715

16+
// FIXME: open question: should we use `cargo_metadata::Dependency` here? We would insert
17+
// many default values like default-features, registry, rename, etc,
18+
// that we don't have in the database.
19+
1820
/// A crate dependency in our internal representation for releases.dependencies json.
1921
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Deref)]
2022
#[serde(from = "Dep", into = "Dep")]
@@ -23,31 +25,35 @@ pub(crate) struct ReleaseDependency(Dependency);
2325
impl From<Dep> for ReleaseDependency {
2426
fn from(src: Dep) -> Self {
2527
let (name, req, kind, optional) = match src {
26-
Dep::Two((name, req)) => (name, req, DEFAULT_KIND.into(), false),
28+
Dep::Two((name, req)) => (name, req, DependencyKind::default(), false),
2729
Dep::Three((name, req, kind)) => (name, req, kind, false),
2830
Dep::Four((name, req, kind, optional)) => (name, req, kind, optional),
2931
};
3032

31-
ReleaseDependency(Dependency {
32-
name,
33-
req,
34-
kind: Some(kind),
35-
optional,
36-
rename: None,
37-
})
33+
ReleaseDependency(
34+
DependencyBuilder::default()
35+
.name(name)
36+
.source(None)
37+
.req(req)
38+
.kind(kind)
39+
.optional(optional)
40+
.uses_default_features(false)
41+
.features(vec![])
42+
.target(None)
43+
.rename(None)
44+
.registry(None)
45+
.path(None)
46+
.build()
47+
.expect("we know the data is correct"),
48+
)
3849
}
3950
}
4051

4152
impl From<ReleaseDependency> for Dep {
4253
// dependency serialization for new releases.
4354
fn from(rd: ReleaseDependency) -> Self {
4455
let d = rd.0;
45-
Dep::Four((
46-
d.name,
47-
d.req,
48-
d.kind.unwrap_or_else(|| DEFAULT_KIND.into()),
49-
d.optional,
50-
))
56+
Dep::Four((d.name, d.req, d.kind, d.optional))
5157
}
5258
}
5359

0 commit comments

Comments
 (0)