From b942be5bc1dc4c140cb0f97498b915cbd6bbd1ff Mon Sep 17 00:00:00 2001 From: Ed Page Date: Tue, 19 Mar 2024 14:07:40 -0500 Subject: [PATCH] refactor(toml): Rely on resolved license --- crates/cargo-util-schemas/src/manifest/mod.rs | 4 ++++ src/cargo/util/toml/mod.rs | 17 +++++++++-------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/crates/cargo-util-schemas/src/manifest/mod.rs b/crates/cargo-util-schemas/src/manifest/mod.rs index b58d65276..13bab7b93 100644 --- a/crates/cargo-util-schemas/src/manifest/mod.rs +++ b/crates/cargo-util-schemas/src/manifest/mod.rs @@ -241,6 +241,10 @@ impl TomlPackage { pub fn resolved_categories(&self) -> Result>, UnresolvedError> { self.categories.as_ref().map(|v| v.resolved()).transpose() } + + pub fn resolved_license(&self) -> Result, UnresolvedError> { + self.license.as_ref().map(|v| v.resolved()).transpose() + } } /// An enum that allows for inheriting keys from a workspace in a Cargo.toml. diff --git a/src/cargo/util/toml/mod.rs b/src/cargo/util/toml/mod.rs index e2aac30a1..cd4204fc7 100644 --- a/src/cargo/util/toml/mod.rs +++ b/src/cargo/util/toml/mod.rs @@ -602,6 +602,12 @@ pub fn to_real_manifest( .map(|value| field_inherit_with(value, "categories", || inherit()?.categories())) .transpose()? .map(manifest::InheritableField::Value); + package.license = package + .license + .clone() + .map(|value| field_inherit_with(value, "license", || inherit()?.license())) + .transpose()? + .map(manifest::InheritableField::Value); let rust_version = package .resolved_rust_version() @@ -924,10 +930,9 @@ pub fn to_real_manifest( .transpose()? .unwrap_or_default(), license: package - .license - .clone() - .map(|mw| field_inherit_with(mw, "license", || inherit()?.license())) - .transpose()?, + .resolved_license() + .expect("previously resolved") + .cloned(), license_file: package .license_file .clone() @@ -961,10 +966,6 @@ pub fn to_real_manifest( .authors .as_ref() .map(|_| manifest::InheritableField::Value(metadata.authors.clone())); - package.license = metadata - .license - .clone() - .map(|license| manifest::InheritableField::Value(license)); package.license_file = metadata .license_file .clone()