Skip to content

Commit 803cebf

Browse files
jyn514Joshua Nelson
authored and
Joshua Nelson
committed
Add support for cargo-args in package metadata
1 parent 84a3db0 commit 803cebf

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

crates/metadata/lib.rs

+25
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,12 @@ pub struct Metadata {
129129
/// List of command line arguments for `rustdoc`.
130130
#[serde(default)]
131131
rustdoc_args: Vec<String>,
132+
133+
/// List of command line arguments for `cargo`.
134+
///
135+
/// These cannot be a subcommand, they may only be options.
136+
#[serde(default)]
137+
cargo_args: Vec<String>,
132138
}
133139

134140
/// The targets that should be built for a crate.
@@ -264,6 +270,7 @@ impl Metadata {
264270
}
265271

266272
cargo_args.extend(additional_args.iter().map(|s| s.to_owned()));
273+
cargo_args.extend_from_slice(&self.cargo_args);
267274
cargo_args.push("--".into());
268275
cargo_args.extend_from_slice(&self.rustdoc_args);
269276
cargo_args.extend(rustdoc_args.iter().map(|s| s.to_owned()));
@@ -336,6 +343,7 @@ mod test_parsing {
336343
targets = [ "x86_64-apple-darwin", "x86_64-pc-windows-msvc" ]
337344
rustc-args = [ "--example-rustc-arg" ]
338345
rustdoc-args = [ "--example-rustdoc-arg" ]
346+
cargo-args = [ "-Zbuild-std" ]
339347
"#;
340348

341349
let metadata = Metadata::from_str(manifest).unwrap();
@@ -369,6 +377,9 @@ mod test_parsing {
369377
assert_eq!(rustdoc_args[0], "--example-rustdoc-arg".to_owned());
370378
assert_eq!(rustdoc_args[1], "-Z".to_owned());
371379
assert_eq!(rustdoc_args[2], "unstable-options".to_owned());
380+
381+
let cargo_args = metadata.cargo_args;
382+
assert_eq!(cargo_args.as_slice(), &["-Zbuild-std"]);
372383
}
373384

374385
#[test]
@@ -678,5 +689,19 @@ mod test_calculations {
678689
"--".into(),
679690
];
680691
assert_eq!(metadata.cargo_args(&[], &[]), expected_args);
692+
693+
// cargo flags
694+
let metadata = Metadata {
695+
cargo_args: vec!["-Zbuild-std".into()],
696+
..Metadata::default()
697+
};
698+
let expected_args = vec![
699+
String::from("rustdoc"),
700+
"--lib".into(),
701+
"-Zrustdoc-map".into(),
702+
"-Zbuild-std".into(),
703+
"--".into(),
704+
];
705+
assert_eq!(metadata.cargo_args(&[], &[]), expected_args);
681706
}
682707
}

templates/core/Cargo.toml.example

+5
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,8 @@ rustc-args = ["--example-rustc-arg"]
4242

4343
# Additional `RUSTDOCFLAGS` to set (default: [])
4444
rustdoc-args = ["--example-rustdoc-arg"]
45+
46+
# List of command line arguments for `cargo`.
47+
#
48+
# These cannot be a subcommand, they may only be options.
49+
cargo-args = ["-Z", "build-std"]

0 commit comments

Comments
 (0)