From a877f347f408a1bb2ffdd1216cce74ee1734bd51 Mon Sep 17 00:00:00 2001 From: Tyera Eulberg Date: Wed, 2 Dec 2020 15:02:52 -0700 Subject: [PATCH] Cli: output stake account credits-observed for verbose/json (#13923) * Add credits_observed to verbose and json CliStakeStake prints * Review comments --- cli-output/src/cli_output.rs | 29 ++++++++++++++++++++++++++--- cli/src/main.rs | 9 +++++++-- cli/src/stake.rs | 2 ++ 3 files changed, 35 insertions(+), 5 deletions(-) diff --git a/cli-output/src/cli_output.rs b/cli-output/src/cli_output.rs index ce28b59051..4444491375 100644 --- a/cli-output/src/cli_output.rs +++ b/cli-output/src/cli_output.rs @@ -541,7 +541,15 @@ impl CliStakeVec { } impl QuietDisplay for CliStakeVec {} -impl VerboseDisplay for CliStakeVec {} +impl VerboseDisplay for CliStakeVec { + fn write_str(&self, w: &mut dyn std::fmt::Write) -> std::fmt::Result { + for state in &self.0 { + writeln!(w)?; + VerboseDisplay::write_str(state, w)?; + } + Ok(()) + } +} impl fmt::Display for CliStakeVec { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { @@ -562,7 +570,12 @@ pub struct CliKeyedStakeState { } impl QuietDisplay for CliKeyedStakeState {} -impl VerboseDisplay for CliKeyedStakeState {} +impl VerboseDisplay for CliKeyedStakeState { + fn write_str(&self, w: &mut dyn std::fmt::Write) -> std::fmt::Result { + writeln!(w, "Stake Pubkey: {}", self.stake_pubkey)?; + VerboseDisplay::write_str(&self.stake_state, w) + } +} impl fmt::Display for CliKeyedStakeState { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { @@ -658,6 +671,8 @@ pub struct CliStakeState { pub stake_type: CliStakeType, pub account_balance: u64, #[serde(skip_serializing_if = "Option::is_none")] + pub credits_observed: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub delegated_stake: Option, #[serde(skip_serializing_if = "Option::is_none")] pub delegated_vote_account_address: Option, @@ -686,7 +701,15 @@ pub struct CliStakeState { } impl QuietDisplay for CliStakeState {} -impl VerboseDisplay for CliStakeState {} +impl VerboseDisplay for CliStakeState { + fn write_str(&self, w: &mut dyn std::fmt::Write) -> std::fmt::Result { + write!(w, "{}", self)?; + if let Some(credits) = self.credits_observed { + writeln!(w, "Credits Observed: {}", credits)?; + } + Ok(()) + } +} impl fmt::Display for CliStakeState { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { diff --git a/cli/src/main.rs b/cli/src/main.rs index 2420cc3ca9..5425b238ab 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -168,6 +168,7 @@ pub fn parse_args<'a>( let CliCommandInfo { command, signers } = parse_command(&matches, &default_signer, &mut wallet_manager)?; + let verbose = matches.is_present("verbose"); let output_format = matches .value_of("output_format") .map(|value| match value { @@ -175,7 +176,11 @@ pub fn parse_args<'a>( "json-compact" => OutputFormat::JsonCompact, _ => unreachable!(), }) - .unwrap_or(OutputFormat::Display); + .unwrap_or(if verbose { + OutputFormat::DisplayVerbose + } else { + OutputFormat::Display + }); let commitment = matches .subcommand_name() @@ -198,7 +203,7 @@ pub fn parse_args<'a>( keypair_path: default_signer_path, rpc_client: None, rpc_timeout, - verbose: matches.is_present("verbose"), + verbose, output_format, commitment, send_transaction_config: RpcSendTransactionConfig::default(), diff --git a/cli/src/stake.rs b/cli/src/stake.rs index fe1d7fbe05..68eb7fb59e 100644 --- a/cli/src/stake.rs +++ b/cli/src/stake.rs @@ -1528,6 +1528,7 @@ pub fn build_stake_state( CliStakeState { stake_type: CliStakeType::Stake, account_balance, + credits_observed: Some(stake.credits_observed), delegated_stake: Some(stake.delegation.stake), delegated_vote_account_address: if stake.delegation.voter_pubkey != Pubkey::default() @@ -1579,6 +1580,7 @@ pub fn build_stake_state( CliStakeState { stake_type: CliStakeType::Initialized, account_balance, + credits_observed: Some(0), authorized: Some(authorized.into()), lockup, use_lamports_unit,