summaryrefslogtreecommitdiffstats
path: root/kitchen_sink
diff options
context:
space:
mode:
authorKornel <kornel@geekhood.net>2019-02-12 23:31:53 +0000
committerKornel <kornel@geekhood.net>2019-02-12 23:31:53 +0000
commit583065c19f7fda6dee4e85db81a874bb55228f65 (patch)
tree5789dbdc437c8b8e30c623e92381a3aa70cb5c17 /kitchen_sink
parentdb181df40bb511ced721728bda15062b31bb2c56 (diff)
Workaround for crates.io having crate metadata from outside of Cargo.toml
Diffstat (limited to 'kitchen_sink')
-rw-r--r--kitchen_sink/src/lib_kitchen_sink.rs23
1 files changed, 21 insertions, 2 deletions
diff --git a/kitchen_sink/src/lib_kitchen_sink.rs b/kitchen_sink/src/lib_kitchen_sink.rs
index 72a2085..d7e43d9 100644
--- a/kitchen_sink/src/lib_kitchen_sink.rs
+++ b/kitchen_sink/src/lib_kitchen_sink.rs
@@ -515,11 +515,30 @@ impl KitchenSink {
///// Fixing and faking the data /////
+ let crates_io_meta = self.crates_io_meta(&origin)?.meta.krate;
+
+ // it may contain data from nowhere! https://github.com/rust-lang/crates.io/issues/1624
+ if package.homepage.is_none() {
+ if let Some(repo) = crates_io_meta.homepage {
+ package.homepage = Some(repo);
+ }
+ }
+ if package.documentation.is_none() {
+ if let Some(repo) = crates_io_meta.documentation {
+ package.documentation = Some(repo);
+ }
+ }
+
// Guess repo URL if none was specified
if package.repository.is_none() {
warnings.insert(Warning::NoRepositoryProperty);
- if package.homepage.as_ref().map_or(false, |h| Repo::looks_like_repo_url(h)) {
- package.repository = package.homepage.take();
+ // it may contain data from nowhere! https://github.com/rust-lang/crates.io/issues/1624
+ if let Some(repo) = crates_io_meta.repository {
+ package.repository = Some(repo);
+ } else {
+ if package.homepage.as_ref().map_or(false, |h| Repo::looks_like_repo_url(h)) {
+ package.repository = package.homepage.take();
+ }
}
}