diff --git a/cli/src/display.rs b/cli/src/display.rs index 2dd0e3ee8d..ec9723806c 100644 --- a/cli/src/display.rs +++ b/cli/src/display.rs @@ -9,3 +9,16 @@ pub fn println_name_value(name: &str, value: &str) { }; println!("{} {}", style(name).bold(), styled_value); } + +pub fn println_name_value_or(name: &str, value: &str, default_value: &str) { + if value == "" { + println!( + "{} {} {}", + style(name).bold(), + style(default_value), + style("(default)").italic() + ); + } else { + println!("{} {}", style(name).bold(), style(value)); + }; +} diff --git a/cli/src/main.rs b/cli/src/main.rs index 2c7f5b9f9f..db1e636106 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -2,7 +2,7 @@ use clap::{crate_description, crate_name, crate_version, Arg, ArgGroup, ArgMatch use console::style; use solana_cli::{ config::{self, Config}, - display::println_name_value, + display::{println_name_value, println_name_value_or}, input_validators::is_url, wallet::{app, parse_command, process_command, WalletConfig, WalletError}, }; @@ -13,18 +13,27 @@ fn parse_settings(matches: &ArgMatches<'_>) -> Result { if let Some(config_file) = matches.value_of("config_file") { + let default_wallet_config = WalletConfig::default(); let config = Config::load(config_file).unwrap_or_default(); if let Some(field) = subcommand_matches.value_of("specific_setting") { - let value = match field { - "url" => config.url, - "keypair" => config.keypair, + let (value, default_value) = match field { + "url" => (config.url, default_wallet_config.json_rpc_url), + "keypair" => (config.keypair, default_wallet_config.keypair_path), _ => unreachable!(), }; - println_name_value(&format!("* {}:", field), &value); + println_name_value_or(&format!("* {}:", field), &value, &default_value); } else { println_name_value("Wallet Config:", config_file); - println_name_value("* url:", &config.url); - println_name_value("* keypair:", &config.keypair); + println_name_value_or( + "* url:", + &config.url, + &default_wallet_config.json_rpc_url, + ); + println_name_value_or( + "* keypair:", + &config.keypair, + &default_wallet_config.keypair_path, + ); } } else { println!( @@ -75,24 +84,22 @@ pub fn parse_args(matches: &ArgMatches<'_>) -> Result) -> Result WalletConfig { + let mut keypair_path = dirs::home_dir().expect("home directory"); + keypair_path.extend(&[".config", "solana", "id.json"]); + WalletConfig { command: WalletCommand::Balance(Pubkey::default()), json_rpc_url: "http://127.0.0.1:8899".to_string(), keypair: Keypair::new(), - keypair_path: "".to_string(), + keypair_path: keypair_path.to_str().unwrap().to_string(), rpc_client: None, } }