@@ -32,6 +32,7 @@ pub fn main() -> Result<()> {
32
32
let matches = cli ( ) . get_matches ( ) ;
33
33
let verbose = matches. is_present ( "verbose" ) ;
34
34
let quiet = matches. is_present ( "quiet" ) ;
35
+ let toolchain = matches. value_of ( "toolchain" ) ;
35
36
let cfg = & common:: set_globals ( verbose, quiet) ?;
36
37
37
38
if maybe_upgrade_data ( cfg, & matches) ? {
@@ -79,7 +80,7 @@ pub fn main() -> Result<()> {
79
80
( _, _) => unreachable ! ( ) ,
80
81
} ,
81
82
( "run" , Some ( m) ) => run ( cfg, m) ?,
82
- ( "which" , Some ( m) ) => which ( cfg, m) ?,
83
+ ( "which" , Some ( m) ) => which ( cfg, m, toolchain ) ?,
83
84
( "doc" , Some ( m) ) => doc ( cfg, m) ?,
84
85
( "man" , Some ( m) ) => man ( cfg, m) ?,
85
86
( "self" , Some ( c) ) => match c. subcommand ( ) {
@@ -817,16 +818,20 @@ fn run(cfg: &Cfg, m: &ArgMatches<'_>) -> Result<()> {
817
818
process:: exit ( c)
818
819
}
819
820
820
- fn which ( cfg : & Cfg , m : & ArgMatches < ' _ > ) -> Result < ( ) > {
821
+ fn which ( cfg : & Cfg , m : & ArgMatches < ' _ > , toolchain_by_root_cmd : Option < & str > ) -> Result < ( ) > {
821
822
let binary = m. value_of ( "command" ) . expect ( "" ) ;
822
- let toolchain_provided = m. is_present ( "toolchain" ) ;
823
- let binary_path = if toolchain_provided {
824
- let toolchain = m. value_of ( "toolchain" ) . expect ( "" ) ;
825
- cfg. which_binary_by_toolchain ( toolchain, binary) ?
823
+ let binary_path = if let Some ( toolchain_by_root_cmd) = toolchain_by_root_cmd {
824
+ cfg. which_binary_by_toolchain ( toolchain_by_root_cmd, binary) ?
826
825
. expect ( "binary not found" )
827
826
} else {
828
- cfg. which_binary ( & utils:: current_dir ( ) ?, binary) ?
829
- . expect ( "binary not found" )
827
+ if m. is_present ( "toolchain" ) {
828
+ let toolchain = m. value_of ( "toolchain" ) . expect ( "" ) ;
829
+ cfg. which_binary_by_toolchain ( toolchain, binary) ?
830
+ . expect ( "binary not found" )
831
+ } else {
832
+ cfg. which_binary ( & utils:: current_dir ( ) ?, binary) ?
833
+ . expect ( "binary not found" )
834
+ }
830
835
} ;
831
836
832
837
utils:: assert_is_file ( & binary_path) ?;
0 commit comments