diff options
author | Kornel <kornel@geekhood.net> | 2019-02-12 23:31:53 +0000 |
---|---|---|
committer | Kornel <kornel@geekhood.net> | 2019-02-12 23:31:53 +0000 |
commit | 583065c19f7fda6dee4e85db81a874bb55228f65 (patch) | |
tree | 5789dbdc437c8b8e30c623e92381a3aa70cb5c17 /kitchen_sink | |
parent | db181df40bb511ced721728bda15062b31bb2c56 (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.rs | 23 |
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(); + } } } |