@@ -65,16 +65,6 @@ fn forward_patched_extern_arg(args: &mut impl Iterator<Item = String>, cmd: &mut
6565}
6666
6767pub fn phase_cargo_miri ( mut args : impl Iterator < Item = String > ) {
68- // Check for version and help flags even when invoked as `cargo-miri`.
69- if has_arg_flag ( "--help" ) || has_arg_flag ( "-h" ) {
70- show_help ( ) ;
71- return ;
72- }
73- if has_arg_flag ( "--version" ) || has_arg_flag ( "-V" ) {
74- show_version ( ) ;
75- return ;
76- }
77-
7868 // Require a subcommand before any flags.
7969 // We cannot know which of those flags take arguments and which do not,
8070 // so we cannot detect subcommands later.
@@ -85,11 +75,36 @@ pub fn phase_cargo_miri(mut args: impl Iterator<Item = String>) {
8575 "setup" => MiriCommand :: Setup ,
8676 "test" | "t" | "run" | "r" | "nextest" => MiriCommand :: Forward ( subcommand) ,
8777 "clean" => MiriCommand :: Clean ,
88- _ =>
78+ _ => {
79+ // Check for version and help flags.
80+ if has_arg_flag ( "--help" ) || has_arg_flag ( "-h" ) {
81+ show_help ( ) ;
82+ return ;
83+ }
84+ if has_arg_flag ( "--version" ) || has_arg_flag ( "-V" ) {
85+ show_version ( ) ;
86+ return ;
87+ }
8988 show_error ! (
9089 "`cargo miri` supports the following subcommands: `run`, `test`, `nextest`, `clean`, and `setup`."
91- ) ,
90+ )
91+ }
9292 } ;
93+ if has_arg_flag ( "--help" ) || has_arg_flag ( "-h" ) {
94+ match subcommand {
95+ MiriCommand :: Forward ( verb) => {
96+ println ! ( "`cargo miri {verb}` supports the same flags as `cargo {verb}`:\n " ) ;
97+ let mut cmd = cargo ( ) ;
98+ cmd. arg ( verb) ;
99+ cmd. arg ( "--help" ) ;
100+ exec ( cmd) ;
101+ }
102+ _ => {
103+ show_help ( ) ;
104+ return ;
105+ }
106+ }
107+ }
93108 let verbose = num_arg_flag ( "-v" ) + num_arg_flag ( "--verbose" ) ;
94109 let quiet = has_arg_flag ( "-q" ) || has_arg_flag ( "--quiet" ) ;
95110
0 commit comments