Skip to content
This repository was archived by the owner on Mar 11, 2025. It is now read-only.

Commit bdd0d49

Browse files
committed
token-cli: impl display for half of extensions
1 parent b90903c commit bdd0d49

File tree

1 file changed

+30
-4
lines changed

1 file changed

+30
-4
lines changed

token/cli/src/output.rs

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@ use console::Emoji;
33
use serde::{Deserialize, Serialize, Serializer};
44
use solana_account_decoder::{
55
parse_token::{UiAccountState, UiMint, UiMultisig, UiTokenAccount, UiTokenAmount},
6-
parse_token_extension::{UiExtension, UiMintCloseAuthority},
6+
parse_token_extension::{
7+
UiDefaultAccountState, UiExtension, UiMemoTransfer, UiMintCloseAuthority,
8+
UiTransferFeeAmount,
9+
},
710
};
811
use solana_cli_output::{display::writeln_name_value, OutputFormat, QuietDisplay, VerboseDisplay};
912
use std::fmt::{self, Display};
@@ -232,7 +235,7 @@ impl fmt::Display for CliTokenAccount {
232235
writeln_name_value(f, " Owner:", &self.account.owner)?;
233236
writeln_name_value(f, " State:", &format!("{:?}", self.account.state))?;
234237
if let Some(delegate) = &self.account.delegate {
235-
writeln!(f, " Delegation:")?;
238+
writeln_name_value(f, " Delegation:", " ")?;
236239
writeln_name_value(f, " Delegate:", delegate)?;
237240
let allowance = self.account.delegated_amount.as_ref().unwrap();
238241
writeln_name_value(f, " Allowance:", &allowance.real_number_string_trimmed())?;
@@ -478,15 +481,38 @@ impl fmt::Display for CliTokenAccounts {
478481

479482
fn display_ui_extension(f: &mut fmt::Formatter, ui_extension: &UiExtension) -> fmt::Result {
480483
match ui_extension {
484+
UiExtension::TransferFeeConfig(_) => unimplemented!(), // annoying
485+
UiExtension::TransferFeeAmount(UiTransferFeeAmount { withheld_amount }) => {
486+
writeln_name_value(f, " Transfer fees withheld:", &withheld_amount.to_string())
487+
}
481488
UiExtension::MintCloseAuthority(UiMintCloseAuthority { close_authority }) => {
482489
writeln_name_value(
483490
f,
484491
" Close authority:",
485492
close_authority.as_ref().unwrap_or(&String::new()),
486493
)
487494
}
488-
UiExtension::ImmutableOwner => writeln_name_value(f, " Immutable owner:", "Enabled"),
489-
_ => unimplemented!(),
495+
UiExtension::ConfidentialTransferMint(_) => unimplemented!(), // very annoying
496+
UiExtension::ConfidentialTransferAccount(_) => unimplemented!(), //very annoying
497+
UiExtension::DefaultAccountState(UiDefaultAccountState { account_state }) => {
498+
writeln_name_value(f, " Default state:", &format!("{:?}", account_state))
499+
}
500+
UiExtension::ImmutableOwner => writeln_name_value(f, " Immutable owner", " "),
501+
UiExtension::MemoTransfer(UiMemoTransfer {
502+
require_incoming_transfer_memos,
503+
}) => writeln_name_value(
504+
f,
505+
" Transfer memo:",
506+
if *require_incoming_transfer_memos {
507+
"Required"
508+
} else {
509+
"Not required"
510+
},
511+
),
512+
UiExtension::NonTransferable => writeln_name_value(f, " Non-transferable", " "),
513+
UiExtension::InterestBearingConfig(_) => unimplemented!(), // little annoying
514+
UiExtension::UnparseableExtension => panic!("err here"),
515+
UiExtension::Uninitialized => panic!("err here...?"),
490516
}
491517
}
492518

0 commit comments

Comments
 (0)