cli-output: add config ctor for CliAccount
This commit is contained in:
parent
ae557a9eb5
commit
2579c0fcb5
|
@ -87,7 +87,7 @@ pub enum ParsableAccount {
|
|||
Vote,
|
||||
}
|
||||
|
||||
#[derive(Default)]
|
||||
#[derive(Clone, Copy, Default)]
|
||||
pub struct AccountAdditionalData {
|
||||
pub spl_token_decimals: Option<u8>,
|
||||
}
|
||||
|
|
|
@ -15,7 +15,10 @@ use {
|
|||
inflector::cases::titlecase::to_title_case,
|
||||
serde::{Deserialize, Serialize},
|
||||
serde_json::{Map, Value},
|
||||
solana_account_decoder::{parse_token::UiTokenAccount, UiAccount, UiAccountEncoding},
|
||||
solana_account_decoder::{
|
||||
parse_account_data::AccountAdditionalData, parse_token::UiTokenAccount, UiAccount,
|
||||
UiAccountEncoding, UiDataSliceConfig,
|
||||
},
|
||||
solana_clap_utils::keypair::SignOnly,
|
||||
solana_rpc_client_api::response::{
|
||||
RpcAccountBalance, RpcContactInfo, RpcInflationGovernor, RpcInflationRate, RpcKeyedAccount,
|
||||
|
@ -108,12 +111,57 @@ pub struct CliAccount {
|
|||
pub use_lamports_unit: bool,
|
||||
}
|
||||
|
||||
pub struct CliAccountNewConfig {
|
||||
pub data_encoding: UiAccountEncoding,
|
||||
pub additional_data: Option<AccountAdditionalData>,
|
||||
pub data_slice_config: Option<UiDataSliceConfig>,
|
||||
pub use_lamports_unit: bool,
|
||||
}
|
||||
|
||||
impl Default for CliAccountNewConfig {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
data_encoding: UiAccountEncoding::Base64,
|
||||
additional_data: None,
|
||||
data_slice_config: None,
|
||||
use_lamports_unit: false,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl CliAccount {
|
||||
pub fn new<T: ReadableAccount>(address: &Pubkey, account: &T, use_lamports_unit: bool) -> Self {
|
||||
Self::new_with_config(
|
||||
address,
|
||||
account,
|
||||
&CliAccountNewConfig {
|
||||
use_lamports_unit,
|
||||
..CliAccountNewConfig::default()
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
pub fn new_with_config<T: ReadableAccount>(
|
||||
address: &Pubkey,
|
||||
account: &T,
|
||||
config: &CliAccountNewConfig,
|
||||
) -> Self {
|
||||
let CliAccountNewConfig {
|
||||
data_encoding,
|
||||
additional_data,
|
||||
data_slice_config,
|
||||
use_lamports_unit,
|
||||
} = *config;
|
||||
Self {
|
||||
keyed_account: RpcKeyedAccount {
|
||||
pubkey: address.to_string(),
|
||||
account: UiAccount::encode(address, account, UiAccountEncoding::Base64, None, None),
|
||||
account: UiAccount::encode(
|
||||
address,
|
||||
account,
|
||||
data_encoding,
|
||||
additional_data,
|
||||
data_slice_config,
|
||||
),
|
||||
},
|
||||
use_lamports_unit,
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue