Skip to content
This repository has been archived by the owner on Jan 22, 2025. It is now read-only.

Cli: Update OutputFormat method to return a String to restore consistency #9904

Merged
merged 2 commits into from
May 7, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 6 additions & 5 deletions cli/src/cli.rs
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ use solana_transaction_status::{EncodedTransaction, TransactionEncoding};
use solana_vote_program::vote_state::VoteAuthorize;
use std::{
error,
fmt::Write as FmtWrite,
fs::File,
io::{Read, Write},
net::{IpAddr, SocketAddr},
Expand Down Expand Up @@ -1265,21 +1266,21 @@ fn process_show_account(
use_lamports_unit,
};

config.output_format.formatted_print(&cli_account);
let mut account_string = config.output_format.formatted_string(&cli_account);

if config.output_format == OutputFormat::Display {
if let Some(output_file) = output_file {
let mut f = File::create(output_file)?;
f.write_all(&data)?;
println!();
println!("Wrote account data to {}", output_file);
writeln!(&mut account_string)?;
writeln!(&mut account_string, "Wrote account data to {}", output_file)?;
} else if !data.is_empty() {
use pretty_hex::*;
println!("{:?}", data.hex_dump());
writeln!(&mut account_string, "{:?}", data.hex_dump())?;
}
}

Ok("".to_string())
Ok(account_string)
}

fn process_deploy(
Expand Down
14 changes: 4 additions & 10 deletions cli/src/cli_output.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,20 +26,14 @@ pub enum OutputFormat {
}

impl OutputFormat {
pub fn formatted_print<T>(&self, item: &T)
pub fn formatted_string<T>(&self, item: &T) -> String
where
T: Serialize + fmt::Display,
{
match self {
OutputFormat::Display => {
println!("{}", item);
}
OutputFormat::Json => {
println!("{}", serde_json::to_string_pretty(item).unwrap());
}
OutputFormat::JsonCompact => {
println!("{}", serde_json::to_value(item).unwrap());
}
OutputFormat::Display => format!("{}", item),
OutputFormat::Json => serde_json::to_string_pretty(item).unwrap(),
OutputFormat::JsonCompact => serde_json::to_value(item).unwrap().to_string(),
}
}
}
Expand Down
20 changes: 7 additions & 13 deletions cli/src/cluster_query.rs
Original file line number Diff line number Diff line change
Expand Up @@ -529,8 +529,7 @@ pub fn process_cluster_date(rpc_client: &RpcClient, config: &CliConfig) -> Proce
slot: result.context.slot,
timestamp: clock.unix_timestamp,
};
config.output_format.formatted_print(&block_time);
Ok("".to_string())
Ok(config.output_format.formatted_string(&block_time))
} else {
Err(format!("AccountNotFound: pubkey={}", sysvar::clock::id()).into())
}
Expand Down Expand Up @@ -597,8 +596,7 @@ pub fn process_get_block_time(
};
let timestamp = rpc_client.get_block_time(slot)?;
let block_time = CliBlockTime { slot, timestamp };
config.output_format.formatted_print(&block_time);
Ok("".to_string())
Ok(config.output_format.formatted_string(&block_time))
}

pub fn process_get_epoch_info(
Expand All @@ -609,8 +607,7 @@ pub fn process_get_epoch_info(
let epoch_info: CliEpochInfo = rpc_client
.get_epoch_info_with_commitment(commitment_config.clone())?
.into();
config.output_format.formatted_print(&epoch_info);
Ok("".to_string())
Ok(config.output_format.formatted_string(&epoch_info))
}

pub fn process_get_genesis_hash(rpc_client: &RpcClient) -> ProcessResult {
Expand Down Expand Up @@ -792,8 +789,7 @@ pub fn process_show_block_production(
individual_slot_status,
verbose: config.verbose,
};
config.output_format.formatted_print(&block_production);
Ok("".to_string())
Ok(config.output_format.formatted_string(&block_production))
}

pub fn process_total_supply(
Expand Down Expand Up @@ -1122,10 +1118,9 @@ pub fn process_show_stakes(
}
}
}
config
Ok(config
.output_format
.formatted_print(&CliStakeVec::new(stake_accounts));
Ok("".to_string())
.formatted_string(&CliStakeVec::new(stake_accounts)))
}

pub fn process_show_validators(
Expand Down Expand Up @@ -1169,8 +1164,7 @@ pub fn process_show_validators(
delinquent_validators,
use_lamports_unit,
};
config.output_format.formatted_print(&cli_validators);
Ok("".to_string())
Ok(config.output_format.formatted_string(&cli_validators))
}

pub fn process_transaction_history(
Expand Down
3 changes: 1 addition & 2 deletions cli/src/nonce.rs
Original file line number Diff line number Diff line change
Expand Up @@ -590,8 +590,7 @@ pub fn process_show_nonce_account(
nonce_account.authority = Some(data.authority.to_string());
}

config.output_format.formatted_print(&nonce_account);
Ok("".to_string())
Ok(config.output_format.formatted_string(&nonce_account))
};
match state_from_account(&nonce_account)? {
State::Uninitialized => print_account(None),
Expand Down
6 changes: 2 additions & 4 deletions cli/src/stake.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1316,8 +1316,7 @@ pub fn process_show_stake_account(
match stake_account.state() {
Ok(stake_state) => {
let state = build_stake_state(stake_account.lamports, &stake_state, use_lamports_unit);
config.output_format.formatted_print(&state);
Ok("".to_string())
Ok(config.output_format.formatted_string(&state))
}
Err(err) => Err(CliError::RpcRequestError(format!(
"Account data could not be deserialized to stake state: {}",
Expand Down Expand Up @@ -1345,8 +1344,7 @@ pub fn process_show_stake_history(
entries,
use_lamports_unit,
};
config.output_format.formatted_print(&stake_history_output);
Ok("".to_string())
Ok(config.output_format.formatted_string(&stake_history_output))
}

#[allow(clippy::too_many_arguments)]
Expand Down
5 changes: 2 additions & 3 deletions cli/src/validator_info.rs
Original file line number Diff line number Diff line change
Expand Up @@ -410,10 +410,9 @@ pub fn process_get_validator_info(
info: validator_info,
});
}
config
Ok(config
.output_format
.formatted_print(&CliValidatorInfoVec::new(validator_info_list));
Ok("".to_string())
.formatted_string(&CliValidatorInfoVec::new(validator_info_list)))
}

#[cfg(test)]
Expand Down
3 changes: 1 addition & 2 deletions cli/src/vote.rs
Original file line number Diff line number Diff line change
Expand Up @@ -586,8 +586,7 @@ pub fn process_show_vote_account(
use_lamports_unit,
};

config.output_format.formatted_print(&vote_account_data);
Ok("".to_string())
Ok(config.output_format.formatted_string(&vote_account_data))
}

pub fn process_withdraw_from_vote_account(
Expand Down