]> Untitled Git - bdk-cli/commitdiff
Update recipient parsing in handlers.
authorrajarshimaitra <rajarshi149@gmail.com>
Sun, 2 Oct 2022 13:55:18 +0000 (19:25 +0530)
committerrajarshimaitra <rajarshi149@gmail.com>
Sat, 19 Nov 2022 11:17:37 +0000 (16:47 +0530)
Clap doesn't support custom vector parsing. Not so ideal work around is
to handle recipient parsing in create_tx handler at run time.

src/handlers.rs

index c63057146d2026d692199d18525f05bce9c1192f..fbc080e3093b0dd2d6973ab67192d345c5ffc226 100644 (file)
@@ -24,7 +24,7 @@ use crate::commands::*;
 use crate::utils::*;
 use bdk::{database::BatchDatabase, wallet::AddressIndex, Error, FeeRate, KeychainKind, Wallet};
 
-use structopt::StructOpt;
+use clap::Parser;
 
 use bdk::bitcoin::consensus::encode::{deserialize, serialize, serialize_hex};
 #[cfg(any(
@@ -124,12 +124,21 @@ where
             add_data,
             add_string,
         } => {
+            // Handle string to recipient parsing
+            let parsed_recipients = recipients
+                .iter()
+                .map(|recpt| parse_recipient(recpt))
+                .collect::<Result<Vec<_>, _>>()
+                .map_err(Error::Generic)?;
+
             let mut tx_builder = wallet.build_tx();
 
             if send_all {
-                tx_builder.drain_wallet().drain_to(recipients[0].0.clone());
+                tx_builder
+                    .drain_wallet()
+                    .drain_to(parsed_recipients[0].0.clone());
             } else {
-                tx_builder.set_recipients(recipients);
+                tx_builder.set_recipients(parsed_recipients);
             }
 
             if enable_rbf {