@@ -372,6 +372,16 @@ path = "lib.rs"
372
372
}
373
373
374
374
fn phase_cargo_miri ( mut args : env:: Args ) {
375
+ // Check for version and help flags even when invoked as `cargo-miri`.
376
+ if has_arg_flag ( "--help" ) || has_arg_flag ( "-h" ) {
377
+ show_help ( ) ;
378
+ return ;
379
+ }
380
+ if has_arg_flag ( "--version" ) || has_arg_flag ( "-V" ) {
381
+ show_version ( ) ;
382
+ return ;
383
+ }
384
+
375
385
// Require a subcommand before any flags.
376
386
// We cannot know which of those flags take arguments and which do not,
377
387
// so we cannot detect subcommands later.
@@ -567,6 +577,13 @@ fn phase_cargo_runner(binary: &str, binary_args: env::Args) {
567
577
let info: CrateRunInfo = serde_json:: from_reader ( file)
568
578
. unwrap_or_else ( |_| show_error ( format ! ( "File {:?} does not contain valid JSON" , binary) ) ) ;
569
579
580
+ // Set missing env vars.
581
+ for ( name, val) in info. env {
582
+ if env:: var_os ( & name) . is_none ( ) {
583
+ env:: set_var ( name, val) ;
584
+ }
585
+ }
586
+
570
587
let mut cmd = miri ( ) ;
571
588
// Forward rustc arguments. We need to patch "--extern" filenames because
572
589
// we forced a check-only build without cargo knowing about that: replace `.rlib` suffix by `.rmeta`.
@@ -610,16 +627,6 @@ fn phase_cargo_runner(binary: &str, binary_args: env::Args) {
610
627
}
611
628
612
629
fn main ( ) {
613
- // Check for version and help flags even when invoked as `cargo-miri`.
614
- if has_arg_flag ( "--help" ) || has_arg_flag ( "-h" ) {
615
- show_help ( ) ;
616
- return ;
617
- }
618
- if has_arg_flag ( "--version" ) || has_arg_flag ( "-V" ) {
619
- show_version ( ) ;
620
- return ;
621
- }
622
-
623
630
// Rustc does not support non-UTF-8 arguments so we make no attempt either.
624
631
// (We do support non-UTF-8 environment variables though.)
625
632
let mut args = std:: env:: args ( ) ;
0 commit comments