From 2ea1ac6fac590def5c75ea053d2009ae98b12742 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Tue, 19 Mar 2024 15:04:12 -0500 Subject: [PATCH] refactor(toml): Rely on resolved publish --- crates/cargo-util-schemas/src/manifest/mod.rs | 4 ++++ src/cargo/util/toml/mod.rs | 17 +++++++---------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/crates/cargo-util-schemas/src/manifest/mod.rs b/crates/cargo-util-schemas/src/manifest/mod.rs index 4e2322cd3..d61415f1f 100644 --- a/crates/cargo-util-schemas/src/manifest/mod.rs +++ b/crates/cargo-util-schemas/src/manifest/mod.rs @@ -219,6 +219,10 @@ impl TomlPackage { self.include.as_ref().map(|v| v.resolved()).transpose() } + pub fn resolved_publish(&self) -> Result, UnresolvedError> { + self.publish.as_ref().map(|v| v.resolved()).transpose() + } + pub fn resolved_description(&self) -> Result, UnresolvedError> { self.description.as_ref().map(|v| v.resolved()).transpose() } diff --git a/src/cargo/util/toml/mod.rs b/src/cargo/util/toml/mod.rs index 30b0b9446..863c35c42 100644 --- a/src/cargo/util/toml/mod.rs +++ b/src/cargo/util/toml/mod.rs @@ -580,6 +580,12 @@ pub fn to_real_manifest( .map(|value| field_inherit_with(value, "include", || inherit()?.include())) .transpose()? .map(manifest::InheritableField::Value); + package.publish = package + .publish + .clone() + .map(|value| field_inherit_with(value, "publish", || inherit()?.publish())) + .transpose()? + .map(manifest::InheritableField::Value); package.description = package .description .clone() @@ -986,17 +992,8 @@ pub fn to_real_manifest( validate_profiles(profiles, cli_unstable, &features, warnings)?; } - let publish = package - .publish - .clone() - .map(|publish| field_inherit_with(publish, "publish", || inherit()?.publish()).unwrap()); - - package.publish = publish - .clone() - .map(|p| manifest::InheritableField::Value(p)); - let version = package.resolved_version().expect("previously resolved"); - let publish = match publish { + let publish = match package.resolved_publish().expect("previously resolved") { Some(manifest::VecStringOrBool::VecString(ref vecstring)) => Some(vecstring.clone()), Some(manifest::VecStringOrBool::Bool(false)) => Some(vec![]), Some(manifest::VecStringOrBool::Bool(true)) => None,