diff options
author | Kornel <kornel@geekhood.net> | 2020-04-01 21:07:50 +0100 |
---|---|---|
committer | Kornel <kornel@geekhood.net> | 2020-04-01 21:08:36 +0100 |
commit | 2b17216a7ce30d629f7638ea2cb5a913cb391867 (patch) | |
tree | cb0c999d208cab1ef1abdef75c4a28599a4ca5f5 | |
parent | 29a8bee0382ec2ba3a1e019b1ffee4b65fcc78a8 (diff) |
Version-specific deprecation
-rw-r--r-- | deps_index/src/index.rs | 12 | ||||
-rw-r--r-- | reindex/src/bin/reindex_crates.rs | 7 |
2 files changed, 13 insertions, 6 deletions
diff --git a/deps_index/src/index.rs b/deps_index/src/index.rs index 99c6637..4d7e90f 100644 --- a/deps_index/src/index.rs +++ b/deps_index/src/index.rs @@ -390,7 +390,7 @@ impl Index { /// 0 = not used *or deprecated* /// 1 = everyone uses it pub async fn version_popularity(&self, crate_name: &str, requirement: &VersionReq) -> Result<Option<(bool, f32)>, DepsErr> { - if is_deprecated(crate_name) { + if is_deprecated(crate_name, requirement) { return Ok(Some((false, 0.))); } @@ -448,11 +448,13 @@ impl fmt::Debug for Dep { } } -/// TODO: check if the repo is rust-lang-deprecated. -/// Note: the repo URL in the crate is outdated, and it may be a redirect to the deprecated -pub fn is_deprecated(name: &str) -> bool { +pub fn is_deprecated(name: &str, requirement: &VersionReq) -> bool { + let v02 = "0.2.99".parse().unwrap(); + let v01 = "0.1.99".parse().unwrap(); match name { - "rustc-serialize" | "gcc" | "rustc-benchmarks" | "time" | "rust-crypto" | + "time" if requirement.matches(&v01) => true, + "winapi" if requirement.matches(&v01) || requirement.matches(&v02) => true, + "rustc-serialize" | "gcc" | "rustc-benchmarks" | "rust-crypto" | "flate2-crc" | "complex" | "simple_stats" | "concurrent" | "feed" | "isatty" | "thread-scoped" | "target_build_utils" | "chan" | "chan-signal" | "glsl-to-spirv" => true, diff --git a/reindex/src/bin/reindex_crates.rs b/reindex/src/bin/reindex_crates.rs index 7ab1383..c26f3f6 100644 --- a/reindex/src/bin/reindex_crates.rs +++ b/reindex/src/bin/reindex_crates.rs @@ -368,7 +368,7 @@ fn is_squatspam(k: &RichCrateVersion) -> bool { } fn is_deprecated(k: &RichCrateVersion) -> bool { - if k.version().contains("deprecated") || kitchen_sink::is_deprecated(k.short_name()) || k.version() == "0.0.0" || k.version() == "0.0.1" { + if k.version().contains("deprecated") || k.version() == "0.0.0" || k.version() == "0.0.1" { return true; } if k.maintenance() == MaintenanceStatus::Deprecated { @@ -400,6 +400,11 @@ fn is_deprecated(k: &RichCrateVersion) -> bool { desc.contains("this tool is abandoned") || desc.ends_with("deprecated") || desc.contains("deprecated in favor") || desc.contains("project is deprecated"); } + if let Ok(req) = k.version().parse() { + if kitchen_sink::is_deprecated(k.short_name(), &req) { + return true; + } + } false } |