diff --git a/cli/src/main.rs b/cli/src/main.rs index cb3e71f5ea..c6ccc7ec8c 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -16,7 +16,7 @@ use solana_cli_config::{Config, CONFIG_FILE}; use solana_remote_wallet::remote_wallet::{maybe_wallet_manager, RemoteWalletManager}; use std::{error, sync::Arc}; -fn parse_settings(matches: &ArgMatches<'_>) -> Result> { +fn parse_settings(matches: &ArgMatches<'_>) -> Result, Box> { let parse_args = match matches.subcommand() { ("config", Some(matches)) => match matches.subcommand() { ("get", Some(subcommand_matches)) => { @@ -54,7 +54,7 @@ fn parse_settings(matches: &ArgMatches<'_>) -> Result { if let Some(config_file) = matches.value_of("config_file") { @@ -94,11 +94,19 @@ fn parse_settings(matches: &ArgMatches<'_>) -> Result unreachable!(), }, - _ => true, + _ => { + let need_wallet_manager = if let Some(config_file) = matches.value_of("config_file") { + let config = Config::load(config_file).unwrap_or_default(); + check_for_usb([config.keypair_path].iter()) + } else { + false + }; + Some(need_wallet_manager) + } }; Ok(parse_args) } @@ -262,8 +270,8 @@ fn do_main( matches: &ArgMatches<'_>, need_wallet_manager: bool, ) -> Result<(), Box> { - if parse_settings(&matches)? { - let wallet_manager = if need_wallet_manager { + if let Some(config_need_wallet_manager) = parse_settings(&matches)? { + let wallet_manager = if need_wallet_manager || config_need_wallet_manager { maybe_wallet_manager()? } else { None diff --git a/keygen/src/keygen.rs b/keygen/src/keygen.rs index 0642fefb9b..484f0f7bd6 100644 --- a/keygen/src/keygen.rs +++ b/keygen/src/keygen.rs @@ -407,11 +407,12 @@ fn do_main(matches: &ArgMatches<'_>) -> Result<(), Box> { Config::default() }; - let wallet_manager = if check_for_usb(std::env::args()) { - maybe_wallet_manager()? - } else { - None - }; + let wallet_manager = + if check_for_usb(std::env::args()) || check_for_usb([config.keypair_path.clone()].iter()) { + maybe_wallet_manager()? + } else { + None + }; match matches.subcommand() { ("pubkey", Some(matches)) => {