@@ -129,6 +129,12 @@ pub struct Metadata {
129
129
/// List of command line arguments for `rustdoc`.
130
130
#[ serde( default ) ]
131
131
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 > ,
132
138
}
133
139
134
140
/// The targets that should be built for a crate.
@@ -264,6 +270,7 @@ impl Metadata {
264
270
}
265
271
266
272
cargo_args. extend ( additional_args. iter ( ) . map ( |s| s. to_owned ( ) ) ) ;
273
+ cargo_args. extend_from_slice ( & self . cargo_args ) ;
267
274
cargo_args. push ( "--" . into ( ) ) ;
268
275
cargo_args. extend_from_slice ( & self . rustdoc_args ) ;
269
276
cargo_args. extend ( rustdoc_args. iter ( ) . map ( |s| s. to_owned ( ) ) ) ;
@@ -336,6 +343,7 @@ mod test_parsing {
336
343
targets = [ "x86_64-apple-darwin", "x86_64-pc-windows-msvc" ]
337
344
rustc-args = [ "--example-rustc-arg" ]
338
345
rustdoc-args = [ "--example-rustdoc-arg" ]
346
+ cargo-args = [ "-Zbuild-std" ]
339
347
"# ;
340
348
341
349
let metadata = Metadata :: from_str ( manifest) . unwrap ( ) ;
@@ -369,6 +377,9 @@ mod test_parsing {
369
377
assert_eq ! ( rustdoc_args[ 0 ] , "--example-rustdoc-arg" . to_owned( ) ) ;
370
378
assert_eq ! ( rustdoc_args[ 1 ] , "-Z" . to_owned( ) ) ;
371
379
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" ] ) ;
372
383
}
373
384
374
385
#[ test]
@@ -678,5 +689,19 @@ mod test_calculations {
678
689
"--" . into( ) ,
679
690
] ;
680
691
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) ;
681
706
}
682
707
}
0 commit comments