Skip to content

Commit 831dbff

Browse files
committed
Add ln addr to example cli
1 parent 1054f53 commit 831dbff

1 file changed

Lines changed: 75 additions & 0 deletions

File tree

examples/cli/src/main.rs

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,13 @@ enum Commands {
5656
/// Amount in sats (optional)
5757
amount: Option<u64>,
5858
},
59+
/// Get the current lightning address
60+
GetLightningAddress,
61+
/// Register a lightning address
62+
RegisterLightningAddress {
63+
/// The lightning address name to register
64+
name: String,
65+
},
5966
/// Clear the screen
6067
Clear,
6168
/// Exit the application
@@ -367,6 +374,14 @@ fn parse_command(input: &str) -> Result<Commands> {
367374

368375
Ok(Commands::EstimateFee { destination, amount })
369376
},
377+
"get-lightning-address" | "get-ln-addr" | "ln-addr" => Ok(Commands::GetLightningAddress),
378+
"register-lightning-address" | "register-ln-addr" => {
379+
if parts.len() < 2 {
380+
return Err(anyhow::anyhow!("Usage: register-lightning-address <name>"));
381+
}
382+
let name = parts[1].to_string();
383+
Ok(Commands::RegisterLightningAddress { name })
384+
},
370385
"clear" | "cls" => Ok(Commands::Clear),
371386
"exit" | "quit" | "q" => Ok(Commands::Exit),
372387
"help" => {
@@ -590,6 +605,60 @@ async fn execute_command(command: Commands, state: &mut WalletState) -> Result<(
590605
},
591606
}
592607
},
608+
Commands::GetLightningAddress => {
609+
let wallet = state.wallet();
610+
611+
println!("{} Fetching lightning address...", "⚡".bright_yellow());
612+
613+
match wallet.get_lightning_address().await {
614+
Ok(Some(address)) => {
615+
println!(
616+
"{} Lightning address: {}",
617+
"⚡".bright_green(),
618+
address.bright_cyan()
619+
);
620+
},
621+
Ok(None) => {
622+
println!("{} No lightning address registered yet.", "⚡".bright_yellow());
623+
println!(
624+
"{} Use 'register-lightning-address <name>' to register one",
625+
"Hint:".bright_yellow().bold()
626+
);
627+
},
628+
Err(e) => {
629+
return Err(anyhow::anyhow!("Failed to get lightning address: {:?}", e));
630+
},
631+
}
632+
},
633+
Commands::RegisterLightningAddress { name } => {
634+
let wallet = state.wallet();
635+
636+
println!(
637+
"{} Registering lightning address: {}...",
638+
"⚡".bright_yellow(),
639+
name.bright_cyan()
640+
);
641+
642+
match wallet.register_lightning_address(name.clone()).await {
643+
Ok(()) => {
644+
println!("{} Lightning address registered successfully!", "✅".bright_green());
645+
// Fetch and display the full address
646+
match wallet.get_lightning_address().await {
647+
Ok(Some(address)) => {
648+
println!(
649+
"{} Your lightning address: {}",
650+
"⚡".bright_green(),
651+
address.bright_cyan()
652+
);
653+
},
654+
_ => {},
655+
}
656+
},
657+
Err(e) => {
658+
return Err(anyhow::anyhow!("Failed to register lightning address: {:?}", e));
659+
},
660+
}
661+
},
593662
Commands::Clear => {
594663
print!("\x1B[2J\x1B[1;1H");
595664
std::io::stdout().flush().unwrap();
@@ -628,6 +697,12 @@ fn print_help() {
628697
println!(" {} <destination> [amount]", "estimate-fee".bright_green().bold());
629698
println!(" Estimate the fee for a payment");
630699
println!();
700+
println!(" {}", "get-lightning-address".bright_green().bold());
701+
println!(" Get the current lightning address");
702+
println!();
703+
println!(" {} <name>", "register-lightning-address".bright_green().bold());
704+
println!(" Register a lightning address");
705+
println!();
631706
println!(" {}", "clear".bright_green().bold());
632707
println!(" Clear the terminal screen");
633708
println!();

0 commit comments

Comments
 (0)