From 19394d7b471ac0e3adc9f5698439202e4b1baa60 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Wed, 14 Jun 2017 07:56:40 -0700 Subject: [PATCH] Preserve `package.metadata` when packaging Now that we use Serde this is actually trivial to implement! Closes #4142 --- src/cargo/util/toml.rs | 5 ++--- tests/package.rs | 6 ++++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/cargo/util/toml.rs b/src/cargo/util/toml.rs index 57fe72abb5a..34ab86a3143 100644 --- a/src/cargo/util/toml.rs +++ b/src/cargo/util/toml.rs @@ -109,9 +109,7 @@ pub fn to_manifest(contents: &str, let manifest: TomlManifest = serde_ignored::deserialize(root, |path| { let mut key = String::new(); stringify(&mut key, &path); - if !key.starts_with("package.metadata") { - unused.insert(key); - } + unused.insert(key); })?; let manifest = Rc::new(manifest); @@ -459,6 +457,7 @@ pub struct TomlProject { #[serde(rename = "license-file")] license_file: Option, repository: Option, + metadata: Option, } #[derive(Deserialize, Serialize)] diff --git a/tests/package.rs b/tests/package.rs index 1777235e1cf..d54fdc2375a 100644 --- a/tests/package.rs +++ b/tests/package.rs @@ -604,6 +604,9 @@ fn generated_manifest() { license = "MIT" description = "foo" + [project.metadata] + foo = 'bar' + [workspace] [dependencies] @@ -652,6 +655,9 @@ authors = [] exclude = ["*.txt"] description = "foo" license = "MIT" + +[package.metadata] +foo = "bar" [dependencies.bar] version = "0.1" "#));