Cli: Update OutputFormat method to return a String to restore consistency (#9904)
* Update OutputFormat method to return a String to restore consistency * Remove process_show_account special case
This commit is contained in:
parent
d5c889d6b0
commit
65a52a4145
|
@ -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},
|
||||
|
@ -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(
|
||||
|
|
|
@ -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(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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())
|
||||
}
|
||||
|
@ -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(
|
||||
|
@ -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 {
|
||||
|
@ -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(
|
||||
|
@ -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(
|
||||
|
@ -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(
|
||||
|
|
|
@ -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),
|
||||
|
|
|
@ -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: {}",
|
||||
|
@ -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)]
|
||||
|
|
|
@ -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)]
|
||||
|
|
|
@ -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(
|
||||
|
|
Loading…
Reference in New Issue