use assert_cmd::Command;
use std::path::PathBuf;
#[allow(dead_code)]
#[derive(Debug)]
pub struct BdkCli {
pub network: String,
pub datadir: Option<PathBuf>,
pub recv_desc: Option<String>,
pub change_desc: Option<String>,
pub server_url: Option<String>,
}
impl BdkCli {
pub fn new(network: &str, datadir: Option<PathBuf>) -> Self {
Self {
network: network.to_string(),
datadir,
recv_desc: None,
change_desc: None,
server_url: None,
}
}
pub fn build_base_cmd(&self) -> Command {
let mut cmd = Command::cargo_bin("bdk-cli").expect("bdk-cli binary must compile");
cmd.arg("--network").arg(&self.network);
if let Some(dir) = &self.datadir {
cmd.arg("--datadir").arg(dir);
}
if let Some(url) = &self.server_url {
cmd.arg("--server").arg(url);
}
cmd
}
pub fn cmd(&self, subcommand: &str, args: &[&str]) -> Command {
let mut cmd = self.build_base_cmd();
cmd.arg(subcommand);
cmd.args(args);
cmd
}
pub fn key_cmd(&self, args: &[&str]) -> Command {
let mut cmd = self.build_base_cmd();
cmd.arg("key");
cmd.args(args);
cmd
}
#[allow(unused)]
pub fn wallet_cmd(&self, args: &[&str]) -> Command {
let mut cmd = self.build_base_cmd();
cmd.arg("wallet");
if let Some(recv) = &self.recv_desc {
cmd.arg("--descriptor").arg(recv);
}
cmd.args(args);
cmd
}
}