From 8b4bfa38186dddf35cf9d5fc5fde1c192584f936 Mon Sep 17 00:00:00 2001 From: MaxV <60802079+maxv-rust@users.noreply.github.com> Date: Sat, 24 Oct 2020 00:39:51 -0700 Subject: [PATCH] Allow upgrade for crates with path * Do not remove keys * Allow all crates to be updated (don't use is_version_dep) --- src/bin/upgrade/main.rs | 1 - src/manifest.rs | 15 ++++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/bin/upgrade/main.rs b/src/bin/upgrade/main.rs index ef1d94d647..9b070b7ced 100644 --- a/src/bin/upgrade/main.rs +++ b/src/bin/upgrade/main.rs @@ -245,7 +245,6 @@ impl Manifests { self.0 .iter() .flat_map(|&(_, ref package)| package.dependencies.clone()) - .filter(is_version_dep) .filter_map(|dependency| { let is_prerelease = dependency.req.to_string().contains('-'); if selected_dependencies.is_empty() { diff --git a/src/manifest.rs b/src/manifest.rs index a37d344f3f..6ce24f11f9 100644 --- a/src/manifest.rs +++ b/src/manifest.rs @@ -71,16 +71,17 @@ fn merge_dependencies(old_dep: &mut toml_edit::Item, new: &Dependency) { let new_toml = new.to_toml().1; - if str_or_1_len_table(old_dep) { - // The old dependency is just a version/git/path. We are safe to overwrite. + if old_dep.is_str() { + // The old dependency is just a version. We are safe to overwrite. *old_dep = new_toml; } else if old_dep.is_table_like() { - for key in &["version", "path", "git"] { - // remove this key/value pairs - old_dep[key] = toml_edit::Item::None; - } if let Some(name) = new_toml.as_str() { - old_dep["version"] = toml_edit::value(name); + match &mut old_dep["version"] { + // There may be a reason the crate doesn't have a version + toml_edit::Item::None => {}, + // Update the version old version with the new one + version => *version = toml_edit::value(name), + } } else { merge_inline_table(old_dep, &new_toml); }