Merge --seller-addr and --seller-peer-id into --seller parameter

This simplifies the CLI's interface.
This commit is contained in:
Thomas Eizinger 2021-07-06 14:39:05 +10:00
parent 206c98d71b
commit ec4234fbb9
No known key found for this signature in database
GPG key ID: 651AC83A6C6C8B96
6 changed files with 121 additions and 95 deletions

View file

@ -3,7 +3,6 @@ use crate::fs::system_data_dir;
use crate::{env, monero};
use anyhow::{Context, Result};
use libp2p::core::Multiaddr;
use libp2p::PeerId;
use std::ffi::OsString;
use std::path::PathBuf;
use std::str::FromStr;
@ -68,8 +67,7 @@ where
let arguments = match args.cmd {
RawCommand::BuyXmr {
seller_peer_id,
seller_addr: SellerAddr { seller_addr },
seller: Seller { seller },
bitcoin:
Bitcoin {
bitcoin_electrum_rpc_url,
@ -87,8 +85,7 @@ where
json,
data_dir: data::data_dir_from(data, is_testnet)?,
cmd: Command::BuyXmr {
seller_peer_id,
seller_addr,
seller,
bitcoin_electrum_rpc_url: bitcoin_electrum_rpc_url_from(
bitcoin_electrum_rpc_url,
is_testnet,
@ -114,7 +111,6 @@ where
},
RawCommand::Resume {
swap_id: SwapId { swap_id },
seller_addr: SellerAddr { seller_addr },
bitcoin:
Bitcoin {
bitcoin_electrum_rpc_url,
@ -133,7 +129,6 @@ where
data_dir: data::data_dir_from(data, is_testnet)?,
cmd: Command::Resume {
swap_id,
seller_addr,
bitcoin_electrum_rpc_url: bitcoin_electrum_rpc_url_from(
bitcoin_electrum_rpc_url,
is_testnet,
@ -201,8 +196,7 @@ where
#[derive(Debug, PartialEq)]
pub enum Command {
BuyXmr {
seller_peer_id: PeerId,
seller_addr: Multiaddr,
seller: Multiaddr,
bitcoin_electrum_rpc_url: Url,
bitcoin_target_block: usize,
monero_receive_address: monero::Address,
@ -212,7 +206,6 @@ pub enum Command {
History,
Resume {
swap_id: Uuid,
seller_addr: Multiaddr,
bitcoin_electrum_rpc_url: Url,
bitcoin_target_block: usize,
monero_receive_address: monero::Address,
@ -268,11 +261,8 @@ pub struct RawArguments {
pub enum RawCommand {
/// Start a XMR for BTC swap
BuyXmr {
#[structopt(long = "seller-peer-id", help = "The seller's peer id")]
seller_peer_id: PeerId,
#[structopt(flatten)]
seller_addr: SellerAddr,
seller: Seller,
#[structopt(flatten)]
bitcoin: Bitcoin,
@ -290,9 +280,6 @@ pub enum RawCommand {
#[structopt(flatten)]
swap_id: SwapId,
#[structopt(flatten)]
seller_addr: SellerAddr,
#[structopt(flatten)]
bitcoin: Bitcoin,
@ -373,9 +360,12 @@ pub struct SwapId {
}
#[derive(structopt::StructOpt, Debug)]
pub struct SellerAddr {
#[structopt(long = "seller-addr", help = "The seller's multiaddress")]
pub seller_addr: Multiaddr,
pub struct Seller {
#[structopt(
long,
help = "The seller's address. Must include a peer ID part, i.e. `/p2p/`"
)]
pub seller: Multiaddr,
}
mod data {
@ -492,8 +482,8 @@ mod tests {
const MONERO_STAGENET_ADDRESS: &str = "53gEuGZUhP9JMEBZoGaFNzhwEgiG7hwQdMCqFxiyiTeFPmkbt1mAoNybEUvYBKHcnrSgxnVWgZsTvRBaHBNXPa8tHiCU51a";
const MONERO_MAINNET_ADDRESS: &str = "44Ato7HveWidJYUAVw5QffEcEtSH1DwzSP3FPPkHxNAS4LX9CqgucphTisH978FLHE34YNEx7FcbBfQLQUU8m3NUC4VqsRa";
const MUTLI_ADDRESS: &str = "/ip4/127.0.0.1/tcp/9939";
const PEER_ID: &str = "12D3KooWCdMKjesXMJz1SiZ7HgotrxuqhQJbP5sgBm2BwP1cqThi";
const MULTI_ADDRESS: &str =
"/ip4/127.0.0.1/tcp/9939/p2p/12D3KooWCdMKjesXMJz1SiZ7HgotrxuqhQJbP5sgBm2BwP1cqThi";
const SWAP_ID: &str = "ea030832-3be9-454f-bb98-5ea9a788406b";
#[test]
@ -503,10 +493,8 @@ mod tests {
"buy-xmr",
"--receive-address",
MONERO_MAINNET_ADDRESS,
"--seller-addr",
MUTLI_ADDRESS,
"--seller-peer-id",
PEER_ID,
"--seller",
MULTI_ADDRESS,
];
let expected_args = ParseResult::Arguments(Arguments::buy_xmr_mainnet_defaults());
@ -523,10 +511,8 @@ mod tests {
"buy-xmr",
"--receive-address",
MONERO_STAGENET_ADDRESS,
"--seller-addr",
MUTLI_ADDRESS,
"--seller-peer-id",
PEER_ID,
"--seller",
MULTI_ADDRESS,
];
let args = parse_args_and_apply_defaults(raw_ars).unwrap();
@ -544,10 +530,8 @@ mod tests {
"buy-xmr",
"--receive-address",
MONERO_STAGENET_ADDRESS,
"--seller-addr",
MUTLI_ADDRESS,
"--seller-peer-id",
PEER_ID,
"--seller",
MULTI_ADDRESS,
];
let err = parse_args_and_apply_defaults(raw_ars).unwrap_err();
@ -569,10 +553,8 @@ mod tests {
"buy-xmr",
"--receive-address",
MONERO_MAINNET_ADDRESS,
"--seller-addr",
MUTLI_ADDRESS,
"--seller-peer-id",
PEER_ID,
"--seller",
MULTI_ADDRESS,
];
let err = parse_args_and_apply_defaults(raw_ars).unwrap_err();
@ -595,8 +577,6 @@ mod tests {
SWAP_ID,
"--receive-address",
MONERO_MAINNET_ADDRESS,
"--seller-addr",
MUTLI_ADDRESS,
];
let args = parse_args_and_apply_defaults(raw_ars).unwrap();
@ -617,8 +597,6 @@ mod tests {
SWAP_ID,
"--receive-address",
MONERO_STAGENET_ADDRESS,
"--seller-addr",
MUTLI_ADDRESS,
];
let args = parse_args_and_apply_defaults(raw_ars).unwrap();
@ -688,10 +666,8 @@ mod tests {
"buy-xmr",
"--receive-address",
MONERO_MAINNET_ADDRESS,
"--seller-addr",
MUTLI_ADDRESS,
"--seller-peer-id",
PEER_ID,
"--seller",
MULTI_ADDRESS,
];
let args = parse_args_and_apply_defaults(raw_ars).unwrap();
@ -712,10 +688,8 @@ mod tests {
"buy-xmr",
"--receive-address",
MONERO_STAGENET_ADDRESS,
"--seller-addr",
MUTLI_ADDRESS,
"--seller-peer-id",
PEER_ID,
"--seller",
MULTI_ADDRESS,
];
let args = parse_args_and_apply_defaults(raw_ars).unwrap();
@ -737,8 +711,6 @@ mod tests {
SWAP_ID,
"--receive-address",
MONERO_MAINNET_ADDRESS,
"--seller-addr",
MUTLI_ADDRESS,
];
let args = parse_args_and_apply_defaults(raw_ars).unwrap();
@ -761,8 +733,6 @@ mod tests {
SWAP_ID,
"--receive-address",
MONERO_STAGENET_ADDRESS,
"--seller-addr",
MUTLI_ADDRESS,
];
let args = parse_args_and_apply_defaults(raw_ars).unwrap();
@ -784,10 +754,8 @@ mod tests {
"buy-xmr",
"--receive-address",
MONERO_MAINNET_ADDRESS,
"--seller-addr",
MUTLI_ADDRESS,
"--seller-peer-id",
PEER_ID,
"--seller",
MULTI_ADDRESS,
];
let args = parse_args_and_apply_defaults(raw_ars).unwrap();
@ -803,10 +771,8 @@ mod tests {
"buy-xmr",
"--receive-address",
MONERO_STAGENET_ADDRESS,
"--seller-addr",
MUTLI_ADDRESS,
"--seller-peer-id",
PEER_ID,
"--seller",
MULTI_ADDRESS,
];
let args = parse_args_and_apply_defaults(raw_ars).unwrap();
@ -823,8 +789,6 @@ mod tests {
SWAP_ID,
"--receive-address",
MONERO_MAINNET_ADDRESS,
"--seller-addr",
MUTLI_ADDRESS,
];
let args = parse_args_and_apply_defaults(raw_ars).unwrap();
@ -842,8 +806,6 @@ mod tests {
SWAP_ID,
"--receive-address",
MONERO_STAGENET_ADDRESS,
"--seller-addr",
MUTLI_ADDRESS,
];
let args = parse_args_and_apply_defaults(raw_ars).unwrap();
@ -861,10 +823,8 @@ mod tests {
"buy-xmr",
"--receive-address",
MONERO_MAINNET_ADDRESS,
"--seller-addr",
MUTLI_ADDRESS,
"--seller-peer-id",
PEER_ID,
"--seller",
MULTI_ADDRESS,
];
let args = parse_args_and_apply_defaults(raw_ars).unwrap();
@ -880,10 +840,8 @@ mod tests {
"buy-xmr",
"--receive-address",
MONERO_STAGENET_ADDRESS,
"--seller-addr",
MUTLI_ADDRESS,
"--seller-peer-id",
PEER_ID,
"--seller",
MULTI_ADDRESS,
];
let args = parse_args_and_apply_defaults(raw_ars).unwrap();
@ -900,8 +858,6 @@ mod tests {
SWAP_ID,
"--receive-address",
MONERO_MAINNET_ADDRESS,
"--seller-addr",
MUTLI_ADDRESS,
];
let args = parse_args_and_apply_defaults(raw_ars).unwrap();
@ -919,8 +875,6 @@ mod tests {
SWAP_ID,
"--receive-address",
MONERO_STAGENET_ADDRESS,
"--seller-addr",
MUTLI_ADDRESS,
];
let args = parse_args_and_apply_defaults(raw_ars).unwrap();
@ -938,8 +892,7 @@ mod tests {
json: false,
data_dir: data_dir_path_cli().join(TESTNET),
cmd: Command::BuyXmr {
seller_peer_id: PeerId::from_str(PEER_ID).unwrap(),
seller_addr: Multiaddr::from_str(MUTLI_ADDRESS).unwrap(),
seller: Multiaddr::from_str(MULTI_ADDRESS).unwrap(),
bitcoin_electrum_rpc_url: Url::from_str(DEFAULT_ELECTRUM_RPC_URL_TESTNET)
.unwrap(),
bitcoin_target_block: DEFAULT_BITCOIN_CONFIRMATION_TARGET_TESTNET,
@ -958,8 +911,7 @@ mod tests {
json: false,
data_dir: data_dir_path_cli().join(MAINNET),
cmd: Command::BuyXmr {
seller_peer_id: PeerId::from_str(PEER_ID).unwrap(),
seller_addr: Multiaddr::from_str(MUTLI_ADDRESS).unwrap(),
seller: Multiaddr::from_str(MULTI_ADDRESS).unwrap(),
bitcoin_electrum_rpc_url: Url::from_str(DEFAULT_ELECTRUM_RPC_URL).unwrap(),
bitcoin_target_block: DEFAULT_BITCOIN_CONFIRMATION_TARGET,
monero_receive_address: monero::Address::from_str(MONERO_MAINNET_ADDRESS)
@ -978,7 +930,6 @@ mod tests {
data_dir: data_dir_path_cli().join(TESTNET),
cmd: Command::Resume {
swap_id: Uuid::from_str(SWAP_ID).unwrap(),
seller_addr: Multiaddr::from_str(MUTLI_ADDRESS).unwrap(),
bitcoin_electrum_rpc_url: Url::from_str(DEFAULT_ELECTRUM_RPC_URL_TESTNET)
.unwrap(),
bitcoin_target_block: DEFAULT_BITCOIN_CONFIRMATION_TARGET_TESTNET,
@ -998,7 +949,6 @@ mod tests {
data_dir: data_dir_path_cli().join(MAINNET),
cmd: Command::Resume {
swap_id: Uuid::from_str(SWAP_ID).unwrap(),
seller_addr: Multiaddr::from_str(MUTLI_ADDRESS).unwrap(),
bitcoin_electrum_rpc_url: Url::from_str(DEFAULT_ELECTRUM_RPC_URL).unwrap(),
bitcoin_target_block: DEFAULT_BITCOIN_CONFIRMATION_TARGET,
monero_receive_address: monero::Address::from_str(MONERO_MAINNET_ADDRESS)