Skip to content

Commit a6e6aa9

Browse files
authored
Merge pull request #487 from pietroalbini/renamed-crates
Handle renamed crates
2 parents f8c3912 + 7811521 commit a6e6aa9

File tree

3 files changed

+39
-12
lines changed

3 files changed

+39
-12
lines changed

src/db/add_package.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ pub(crate) fn add_package_into_database(conn: &Connection,
6363
&metadata_pkg.version,
6464
&release_time,
6565
&dependencies.to_json(),
66-
&metadata_pkg.targets[0].name.replace("-", "_"),
66+
&metadata_pkg.package_name(),
6767
&yanked,
6868
&res.successful,
6969
&has_docs,
@@ -117,7 +117,7 @@ pub(crate) fn add_package_into_database(conn: &Connection,
117117
&format!("{}", metadata_pkg.version),
118118
&release_time,
119119
&dependencies.to_json(),
120-
&metadata_pkg.targets[0].name.replace("-", "_"),
120+
&metadata_pkg.package_name(),
121121
&yanked,
122122
&res.successful,
123123
&has_docs,

src/docbuilder/rustwide_builder.rs

+13-6
Original file line numberDiff line numberDiff line change
@@ -281,12 +281,19 @@ impl RustwideBuilder {
281281
build.host_source_dir(),
282282
)?);
283283

284-
has_docs = build
285-
.host_target_dir()
286-
.join(&res.target)
287-
.join("doc")
288-
.join(name.replace("-", "_"))
289-
.is_dir();
284+
has_docs = res
285+
.cargo_metadata
286+
.root()
287+
.library_name()
288+
.map(|name| {
289+
build
290+
.host_target_dir()
291+
.join(&res.target)
292+
.join("doc")
293+
.join(name)
294+
.is_dir()
295+
})
296+
.unwrap_or(false);
290297
}
291298

292299
if has_docs {

src/utils/cargo_metadata.rs

+24-4
Original file line numberDiff line numberDiff line change
@@ -79,11 +79,31 @@ pub(crate) struct Package {
7979
}
8080

8181
impl Package {
82+
fn library_target(&self) -> Option<&Target> {
83+
self.targets
84+
.iter()
85+
.find(|target| match target.kind.as_slice() {
86+
[kind] if kind == "lib" || kind == "proc-macro" => true,
87+
_ => false,
88+
})
89+
}
90+
8291
pub(crate) fn is_library(&self) -> bool {
83-
match self.targets[0].kind.as_slice() {
84-
&[ref kind] if kind == "lib" || kind == "proc-macro" => true,
85-
_ => false,
86-
}
92+
self.library_target().is_some()
93+
}
94+
95+
fn normalize_package_name(&self, name: &str) -> String {
96+
name.replace('-', "_")
97+
}
98+
99+
pub(crate) fn package_name(&self) -> String {
100+
self.library_name()
101+
.unwrap_or_else(|| self.normalize_package_name(&self.targets[0].name))
102+
}
103+
104+
pub(crate) fn library_name(&self) -> Option<String> {
105+
self.library_target()
106+
.map(|target| self.normalize_package_name(&target.name))
87107
}
88108
}
89109

0 commit comments

Comments
 (0)