kaspa_cli_lib/modules/
address.rs1use crate::imports::*;
2
3#[derive(Default, Handler)]
4#[help("Show or generate a new address for the current wallet account")]
5pub struct Address;
6
7impl Address {
8 async fn main(self: Arc<Self>, ctx: &Arc<dyn Context>, argv: Vec<String>, _cmd: &str) -> Result<()> {
9 let ctx = ctx.clone().downcast_arc::<KaspaCli>()?;
10
11 if argv.is_empty() {
12 let address = ctx.account().await?.receive_address()?.to_string();
13 tprintln!(ctx, "\n{address}\n");
14 } else {
15 let op = argv.first().unwrap();
16 match op.as_str() {
17 "new" => {
18 let account = ctx.wallet().account()?.as_derivation_capable()?;
19 let ident = account.name_with_id();
20 let new_address = account.new_receive_address().await?;
21 tprintln!(ctx, "Generating new address for account {}", style(ident).cyan());
22 tprintln!(ctx, "{}", style(new_address).blue());
23 }
24 v => {
25 tprintln!(ctx, "unknown command: '{v}'\r\n");
26 return self.display_help(ctx, argv).await;
27 }
28 }
29 }
30
31 Ok(())
32 }
33
34 async fn display_help(self: Arc<Self>, ctx: Arc<KaspaCli>, _argv: Vec<String>) -> Result<()> {
35 ctx.term().help(&[("address [new]", "Show current or generate a new account address")], None)?;
36
37 Ok(())
38 }
39}