]> git.proxmox.com Git - cargo.git/commitdiff
Add `links` to `cargo metadata`.
authorEric Huss <eric@huss.org>
Sun, 23 Dec 2018 19:28:26 +0000 (11:28 -0800)
committerEric Huss <eric@huss.org>
Sun, 23 Dec 2018 19:34:14 +0000 (11:34 -0800)
This is needed for creating registry index entries.

src/cargo/core/package.rs
src/doc/man/cargo-metadata.adoc
src/doc/man/generated/cargo-metadata.html
src/etc/man/cargo-metadata.1
tests/testsuite/metadata.rs
tests/testsuite/read_manifest.rs

index 0de5e3cee95814cc380cbb422a0de0d6e64a7c1f..3ec85b9e2711714523028dc93d53c540e2f353e4 100644 (file)
@@ -71,6 +71,7 @@ struct SerializedPackage<'a> {
     readme: Option<&'a str>,
     repository: Option<&'a str>,
     edition: &'a str,
+    links: Option<&'a str>,
     #[serde(skip_serializing_if = "Option::is_none")]
     metabuild: Option<&'a Vec<String>>,
 }
@@ -120,6 +121,7 @@ impl ser::Serialize for Package {
             readme,
             repository,
             edition: &self.manifest.edition().to_string(),
+            links: self.manifest.links(),
             metabuild: self.manifest.metabuild(),
         }
         .serialize(s)
index abd33e15cfbe3c5ff51e8a94def6d5046d94dad9..35c8f133f3d47a5191031dae1ec8df56d21163ad 100644 (file)
@@ -170,7 +170,11 @@ The output has the following format:
             /* The default edition of the package.
                Note that individual targets may have different editions.
             */
-            "edition": "2018"
+            "edition": "2018",
+            /* Optional string that is the name of a native library the package
+               is linking to.
+            */
+            "links": null,
         }
     ],
     /* Array of members of the workspace.
index 57314b3db2991b2b5668c951bed3945a864e02c3..1aa0ee71420603bcdd4c1729f59b0af00e480181 100644 (file)
@@ -177,7 +177,11 @@ for a Rust API for reading the metadata.</p>
             /* The default edition of the package.
                Note that individual targets may have different editions.
             */
-            "edition": "2018"
+            "edition": "2018",
+            /* Optional string that is the name of a native library the package
+               is linking to.
+            */
+            "links": null,
         }
     ],
     /* Array of members of the workspace.
index acc603943d2ad2238e7209348d2824b42440f9b9..7cbbf73a84811bb72b4f49816e36a7d9d3213448 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: cargo-metadata
 .\"    Author: [see the "AUTHOR(S)" section]
 .\" Generator: Asciidoctor 1.5.8
-.\"      Date: 2018-12-18
+.\"      Date: 2018-12-23
 .\"    Manual: \ \&
 .\"    Source: \ \&
 .\"  Language: English
 .\"
-.TH "CARGO\-METADATA" "1" "2018-12-18" "\ \&" "\ \&"
+.TH "CARGO\-METADATA" "1" "2018-12-23" "\ \&" "\ \&"
 .ie \n(.g .ds Aq \(aq
 .el       .ds Aq '
 .ss \n[.ss] 0
@@ -191,7 +191,11 @@ The output has the following format:
             /* The default edition of the package.
                Note that individual targets may have different editions.
             */
-            "edition": "2018"
+            "edition": "2018",
+            /* Optional string that is the name of a native library the package
+               is linking to.
+            */
+            "links": null,
         }
     ],
     /* Array of members of the workspace.
index 833508517cfddd3c6c10e49a99c87157323f1d12..2b8e1d1abeafb84b412fbfae7d164300770713d1 100644 (file)
@@ -27,6 +27,7 @@ fn cargo_metadata_simple() {
                 "edition": "2015",
                 "license": null,
                 "license_file": null,
+                "links": null,
                 "description": null,
                 "readme": null,
                 "repository": null,
@@ -116,6 +117,7 @@ crate-type = ["lib", "staticlib"]
                 "edition": "2015",
                 "license": null,
                 "license_file": null,
+                "links": null,
                 "description": null,
                 "targets": [
                     {
@@ -195,6 +197,7 @@ optional_feat = []
                 "edition": "2015",
                 "license": null,
                 "license_file": null,
+                "links": null,
                 "description": null,
                 "targets": [
                     {
@@ -287,6 +290,7 @@ fn cargo_metadata_with_deps_and_version() {
                 "keywords": [],
                 "license": null,
                 "license_file": null,
+                "links": null,
                 "manifest_path": "[..]Cargo.toml",
                 "metadata": null,
                 "name": "baz",
@@ -342,6 +346,7 @@ fn cargo_metadata_with_deps_and_version() {
                 "keywords": [],
                 "license": "MIT",
                 "license_file": null,
+                "links": null,
                 "manifest_path": "[..]Cargo.toml",
                 "metadata": null,
                 "name": "foo",
@@ -374,6 +379,7 @@ fn cargo_metadata_with_deps_and_version() {
                 "keywords": [],
                 "license": null,
                 "license_file": null,
+                "links": null,
                 "manifest_path": "[..]Cargo.toml",
                 "metadata": null,
                 "name": "foobar",
@@ -418,6 +424,7 @@ fn cargo_metadata_with_deps_and_version() {
                 "keywords": [],
                 "license": null,
                 "license_file": null,
+                "links": null,
                 "manifest_path": "[..]Cargo.toml",
                 "metadata": null,
                 "name": "bar",
@@ -533,6 +540,7 @@ name = "ex"
                 "keywords": [],
                 "license": null,
                 "license_file": null,
+                "links": null,
                 "description": null,
                 "edition": "2015",
                 "source": null,
@@ -615,6 +623,7 @@ crate-type = ["rlib", "dylib"]
                 "keywords": [],
                 "license": null,
                 "license_file": null,
+                "links": null,
                 "description": null,
                 "edition": "2015",
                 "source": null,
@@ -698,6 +707,7 @@ fn workspace_metadata() {
                 "dependencies": [],
                 "license": null,
                 "license_file": null,
+                "links": null,
                 "description": null,
                 "edition": "2015",
                 "targets": [
@@ -728,6 +738,7 @@ fn workspace_metadata() {
                 "dependencies": [],
                 "license": null,
                 "license_file": null,
+                "links": null,
                 "description": null,
                 "edition": "2015",
                 "targets": [
@@ -806,6 +817,7 @@ fn workspace_metadata_no_deps() {
                 "dependencies": [],
                 "license": null,
                 "license_file": null,
+                "links": null,
                 "description": null,
                 "edition": "2015",
                 "targets": [
@@ -836,6 +848,7 @@ fn workspace_metadata_no_deps() {
                 "dependencies": [],
                 "license": null,
                 "license_file": null,
+                "links": null,
                 "description": null,
                 "edition": "2015",
                 "targets": [
@@ -893,6 +906,7 @@ const MANIFEST_OUTPUT: &str = r#"
         "keywords": [],
         "license": null,
         "license_file": null,
+        "links": null,
         "description": null,
         "edition": "2015",
         "targets":[{
@@ -1070,6 +1084,7 @@ fn package_metadata() {
                 "edition": "2015",
                 "license": null,
                 "license_file": null,
+                "links": null,
                 "description": null,
                 "targets": [
                     {
@@ -1137,6 +1152,7 @@ fn cargo_metadata_path_to_cargo_toml_project() {
                 "keywords": [],
                 "license": null,
                 "license_file": null,
+                "links": null,
                 "manifest_path": "[..]Cargo.toml",
                 "metadata": null,
                 "name": "bar",
@@ -1218,6 +1234,7 @@ fn package_edition_2018() {
                     "keywords": [],
                     "license": null,
                     "license_file": null,
+                    "links": null,
                     "manifest_path": "[..]Cargo.toml",
                     "metadata": null,
                     "name": "foo",
@@ -1303,6 +1320,7 @@ fn target_edition_2018() {
                     "keywords": [],
                     "license": null,
                     "license_file": null,
+                    "links": null,
                     "manifest_path": "[..]Cargo.toml",
                     "metadata": null,
                     "name": "foo",
@@ -1423,6 +1441,7 @@ fn rename_dependency() {
             "keywords": [],
             "license": null,
             "license_file": null,
+            "links": null,
             "manifest_path": "[..]",
             "metadata": null,
             "name": "foo",
@@ -1455,6 +1474,7 @@ fn rename_dependency() {
             "keywords": [],
             "license": null,
             "license_file": null,
+            "links": null,
             "manifest_path": "[..]",
             "metadata": null,
             "name": "bar",
@@ -1487,6 +1507,7 @@ fn rename_dependency() {
             "keywords": [],
             "license": null,
             "license_file": null,
+            "links": null,
             "manifest_path": "[..]",
             "metadata": null,
             "name": "bar",
@@ -1554,3 +1575,90 @@ fn rename_dependency() {
         )
         .run();
 }
+
+#[test]
+fn metadata_links() {
+    let p = project()
+        .file(
+            "Cargo.toml",
+            r#"
+            [project]
+            name = "foo"
+            version = "0.5.0"
+            links = "a"
+            "#,
+        )
+        .file("src/lib.rs", "")
+        .file("build.rs", "fn main() {}")
+        .build();
+
+    p.cargo("metadata")
+        .with_json(r#"
+{
+  "packages": [
+    {
+      "authors": [],
+      "categories": [],
+      "dependencies": [],
+      "description": null,
+      "edition": "2015",
+      "features": {},
+      "id": "foo 0.5.0 [..]",
+      "keywords": [],
+      "license": null,
+      "license_file": null,
+      "links": "a",
+      "manifest_path": "[..]/foo/Cargo.toml",
+      "metadata": null,
+      "name": "foo",
+      "readme": null,
+      "repository": null,
+      "source": null,
+      "targets": [
+        {
+          "crate_types": [
+            "lib"
+          ],
+          "edition": "2015",
+          "kind": [
+            "lib"
+          ],
+          "name": "foo",
+          "src_path": "[..]/foo/src/lib.rs"
+        },
+        {
+          "crate_types": [
+            "bin"
+          ],
+          "edition": "2015",
+          "kind": [
+            "custom-build"
+          ],
+          "name": "build-script-build",
+          "src_path": "[..]/foo/build.rs"
+        }
+      ],
+      "version": "0.5.0"
+    }
+  ],
+  "resolve": {
+    "nodes": [
+      {
+        "dependencies": [],
+        "deps": [],
+        "features": [],
+        "id": "foo 0.5.0 [..]"
+      }
+    ],
+    "root": "foo 0.5.0 [..]"
+  },
+  "target_directory": "[..]/foo/target",
+  "version": 1,
+  "workspace_members": [
+    "foo 0.5.0 [..]"
+  ],
+  "workspace_root": "[..]/foo"
+}
+"#)
+        .run()
+}
index 670da18f67ce2f7eb805f0811a5002931a2f99e8..cbcd0fd870384c43df11e3d1e6a5ece348cc3617 100644 (file)
@@ -14,6 +14,7 @@ static MANIFEST_OUTPUT: &'static str = r#"
     "keywords": [],
     "license": null,
     "license_file": null,
+    "links": null,
     "description": null,
     "edition": "2015",
     "source":null,