Skip to content

Commit 0cd8cad

Browse files
committed
Add ln addr to example cli
1 parent 08ae4bf commit 0cd8cad

File tree

1 file changed

+77
-1
lines changed

1 file changed

+77
-1
lines changed

examples/cli/src/main.rs

Lines changed: 77 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,13 @@ enum Commands {
4949
Transactions,
5050
/// List our lightning Channels
5151
Channels,
52+
/// Get the current lightning address
53+
GetLightningAddress,
54+
/// Register a lightning address
55+
RegisterLightningAddress {
56+
/// The lightning address name to register
57+
name: String,
58+
},
5259
/// Clear the screen
5360
Clear,
5461
/// Exit the application
@@ -346,6 +353,14 @@ fn parse_command(input: &str) -> Result<Commands> {
346353
"status" => Ok(Commands::Status),
347354
"transactions" | "txs" | "tx" => Ok(Commands::Transactions),
348355
"channels" | "chan" => Ok(Commands::Channels),
356+
"get-lightning-address" | "get-ln-addr" | "ln-addr" => Ok(Commands::GetLightningAddress),
357+
"register-lightning-address" | "register-ln-addr" => {
358+
if parts.len() < 2 {
359+
return Err(anyhow::anyhow!("Usage: register-lightning-address <name>"));
360+
}
361+
let name = parts[1].to_string();
362+
Ok(Commands::RegisterLightningAddress { name })
363+
},
349364
"clear" | "cls" => Ok(Commands::Clear),
350365
"exit" | "quit" | "q" => Ok(Commands::Exit),
351366
"help" => {
@@ -542,6 +557,60 @@ async fn execute_command(command: Commands, state: &mut WalletState) -> Result<(
542557
}
543558
}
544559
},
560+
Commands::GetLightningAddress => {
561+
let wallet = state.wallet();
562+
563+
println!("{} Fetching lightning address...", "⚡".bright_yellow());
564+
565+
match wallet.get_lightning_address().await {
566+
Ok(Some(address)) => {
567+
println!(
568+
"{} Lightning address: {}",
569+
"⚡".bright_green(),
570+
address.bright_cyan()
571+
);
572+
},
573+
Ok(None) => {
574+
println!("{} No lightning address registered yet.", "⚡".bright_yellow());
575+
println!(
576+
"{} Use 'register-lightning-address <name>' to register one",
577+
"Hint:".bright_yellow().bold()
578+
);
579+
},
580+
Err(e) => {
581+
return Err(anyhow::anyhow!("Failed to get lightning address: {:?}", e));
582+
},
583+
}
584+
},
585+
Commands::RegisterLightningAddress { name } => {
586+
let wallet = state.wallet();
587+
588+
println!(
589+
"{} Registering lightning address: {}...",
590+
"⚡".bright_yellow(),
591+
name.bright_cyan()
592+
);
593+
594+
match wallet.register_lightning_address(name.clone()).await {
595+
Ok(()) => {
596+
println!("{} Lightning address registered successfully!", "✅".bright_green());
597+
// Fetch and display the full address
598+
match wallet.get_lightning_address().await {
599+
Ok(Some(address)) => {
600+
println!(
601+
"{} Your lightning address: {}",
602+
"⚡".bright_green(),
603+
address.bright_cyan()
604+
);
605+
},
606+
_ => {},
607+
}
608+
},
609+
Err(e) => {
610+
return Err(anyhow::anyhow!("Failed to register lightning address: {:?}", e));
611+
},
612+
}
613+
},
545614
Commands::Clear => {
546615
print!("\x1B[2J\x1B[1;1H");
547616
std::io::stdout().flush().unwrap();
@@ -577,6 +646,12 @@ fn print_help() {
577646
println!(" {}", "channels".bright_green().bold());
578647
println!(" List channels");
579648
println!();
649+
println!(" {}", "get-lightning-address".bright_green().bold());
650+
println!(" Get the current lightning address");
651+
println!();
652+
println!(" {} <name>", "register-lightning-address".bright_green().bold());
653+
println!(" Register a lightning address");
654+
println!();
580655
println!(" {}", "clear".bright_green().bold());
581656
println!(" Clear the terminal screen");
582657
println!();
@@ -587,7 +662,8 @@ fn print_help() {
587662
println!(" balance");
588663
println!(" send lnbc1... 10000");
589664
println!(" receive 25000");
590-
println!(" events");
665+
println!(" register-lightning-address myname");
666+
println!(" get-lightning-address");
591667
println!();
592668
println!("{}", "Note:".bright_yellow().bold());
593669
println!(" The wallet will be auto-initialized on first use with:");

0 commit comments

Comments
 (0)