mirror of
https://github.com/aljazceru/cdk.git
synced 2026-02-10 07:36:13 +01:00
feat(cli): balance
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -3,3 +3,5 @@
|
||||
.direnv
|
||||
.vscode/
|
||||
.idea/
|
||||
*.redb
|
||||
*.sqlite*
|
||||
|
||||
@@ -40,6 +40,8 @@ const DEFAULT_SQLITE_DB_PATH: &str = "./cashu_tool.sqlite";
|
||||
enum Commands {
|
||||
/// Decode a token
|
||||
DecodeToken(sub_commands::decode_token::DecodeTokenSubCommand),
|
||||
/// Balance
|
||||
Balance,
|
||||
/// Pay bolt11 invoice
|
||||
Melt(sub_commands::melt::MeltSubCommand),
|
||||
/// Receive token
|
||||
@@ -94,6 +96,7 @@ async fn main() -> Result<()> {
|
||||
Commands::DecodeToken(sub_command_args) => {
|
||||
sub_commands::decode_token::decode_token(sub_command_args)
|
||||
}
|
||||
Commands::Balance => sub_commands::balance::balance(wallet).await,
|
||||
Commands::Melt(sub_command_args) => {
|
||||
sub_commands::melt::melt(wallet, sub_command_args).await
|
||||
}
|
||||
|
||||
29
crates/cdk-cli/src/sub_commands/balance.rs
Normal file
29
crates/cdk-cli/src/sub_commands/balance.rs
Normal file
@@ -0,0 +1,29 @@
|
||||
use std::collections::HashMap;
|
||||
|
||||
use anyhow::Result;
|
||||
use cdk::nuts::CurrencyUnit;
|
||||
use cdk::url::UncheckedUrl;
|
||||
use cdk::wallet::Wallet;
|
||||
use cdk::Amount;
|
||||
|
||||
pub async fn balance(wallet: Wallet) -> Result<()> {
|
||||
let _ = mint_balances(&wallet).await;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub async fn mint_balances(
|
||||
wallet: &Wallet,
|
||||
) -> Result<Vec<(UncheckedUrl, HashMap<CurrencyUnit, Amount>)>> {
|
||||
let mints_amounts: Vec<(UncheckedUrl, HashMap<_, _>)> =
|
||||
wallet.mint_balances().await?.into_iter().collect();
|
||||
|
||||
for (i, (mint, balance)) in mints_amounts.iter().enumerate() {
|
||||
println!("{i}: {mint}:");
|
||||
for (unit, amount) in balance {
|
||||
println!("- {amount} {unit}");
|
||||
}
|
||||
println!("---------");
|
||||
}
|
||||
|
||||
Ok(mints_amounts)
|
||||
}
|
||||
@@ -1,4 +1,3 @@
|
||||
use std::collections::HashMap;
|
||||
use std::io::Write;
|
||||
use std::str::FromStr;
|
||||
use std::{io, println};
|
||||
@@ -6,21 +5,17 @@ use std::{io, println};
|
||||
use anyhow::{bail, Result};
|
||||
use cdk::amount::SplitTarget;
|
||||
use cdk::nuts::CurrencyUnit;
|
||||
use cdk::url::UncheckedUrl;
|
||||
use cdk::wallet::Wallet;
|
||||
use cdk::Bolt11Invoice;
|
||||
use clap::Args;
|
||||
|
||||
use crate::sub_commands::balance::mint_balances;
|
||||
|
||||
#[derive(Args)]
|
||||
pub struct MeltSubCommand {}
|
||||
|
||||
pub async fn melt(wallet: Wallet, _sub_command_args: &MeltSubCommand) -> Result<()> {
|
||||
let mints_amounts: Vec<(UncheckedUrl, HashMap<_, _>)> =
|
||||
wallet.mint_balances().await?.into_iter().collect();
|
||||
|
||||
for (i, (mint, amount)) in mints_amounts.iter().enumerate() {
|
||||
println!("{}: {}, {:?} sats", i, mint, amount);
|
||||
}
|
||||
let mints_amounts = mint_balances(&wallet).await?;
|
||||
|
||||
println!("Enter mint number to create token");
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
pub mod balance;
|
||||
pub mod check_spent;
|
||||
pub mod decode_token;
|
||||
pub mod melt;
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
use std::collections::HashMap;
|
||||
use std::io::Write;
|
||||
use std::str::FromStr;
|
||||
use std::{io, println};
|
||||
@@ -6,11 +5,12 @@ use std::{io, println};
|
||||
use anyhow::{bail, Result};
|
||||
use cdk::amount::SplitTarget;
|
||||
use cdk::nuts::{Conditions, CurrencyUnit, PublicKey, SpendingConditions};
|
||||
use cdk::url::UncheckedUrl;
|
||||
use cdk::wallet::Wallet;
|
||||
use cdk::Amount;
|
||||
use clap::Args;
|
||||
|
||||
use crate::sub_commands::balance::mint_balances;
|
||||
|
||||
#[derive(Args)]
|
||||
pub struct SendSubCommand {
|
||||
/// Token Memo
|
||||
@@ -34,12 +34,7 @@ pub struct SendSubCommand {
|
||||
}
|
||||
|
||||
pub async fn send(wallet: Wallet, sub_command_args: &SendSubCommand) -> Result<()> {
|
||||
let mints_amounts: Vec<(UncheckedUrl, HashMap<_, _>)> =
|
||||
wallet.mint_balances().await?.into_iter().collect();
|
||||
|
||||
for (i, (mint, amount)) in mints_amounts.iter().enumerate() {
|
||||
println!("{}: {}, {:?} sats", i, mint, amount);
|
||||
}
|
||||
let mints_amounts = mint_balances(&wallet).await?;
|
||||
|
||||
println!("Enter mint number to create token");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user