Separate Buy/Sell for resume command

To avoid confusing the user on whether person should enter a listen addr
or a connect peer id and address
pull/102/head
Franck Royer 3 years ago
parent 672377b216
commit 1fa812b727
No known key found for this signature in database
GPG Key ID: A82ED75A8DFC50A4

@ -23,7 +23,7 @@ use swap::{
alice::swap::AliceState,
bitcoin, bob,
bob::swap::BobState,
cli::{Command, Options},
cli::{Command, Options, Resume},
monero,
network::transport::build,
storage::Database,
@ -173,58 +173,65 @@ async fn main() -> Result<()> {
// Print the table to stdout
table.printstd();
}
Command::Resume {
Command::Resume(Resume::SellXmr {
swap_id,
bitcoind_url,
bitcoin_wallet_name,
monero_wallet_rpc_url,
listen_addr,
}) => {
let db_swap = db.get_state(swap_id)?;
let alice_state = AliceState::try_from(db_swap.clone())?;
let (bitcoin_wallet, monero_wallet) = setup_wallets(
bitcoind_url,
bitcoin_wallet_name.as_str(),
monero_wallet_rpc_url,
config,
)
.await?;
alice_swap(
swap_id,
alice_state,
listen_addr,
bitcoin_wallet,
monero_wallet,
config,
db,
)
.await?;
}
Command::Resume(Resume::BuyXmr {
swap_id,
bitcoind_url,
bitcoin_wallet_name,
monero_wallet_rpc_url,
alice_peer_id,
alice_addr,
} => {
}) => {
let db_swap = db.get_state(swap_id)?;
if let Ok(alice_state) = AliceState::try_from(db_swap.clone()) {
let (bitcoin_wallet, monero_wallet) = setup_wallets(
bitcoind_url,
bitcoin_wallet_name.as_str(),
monero_wallet_rpc_url,
config,
)
.await?;
alice_swap(
swap_id,
alice_state,
listen_addr,
bitcoin_wallet,
monero_wallet,
config,
db,
)
.await?;
} else if let Ok(bob_state) = BobState::try_from(db_swap) {
let (bitcoin_wallet, monero_wallet) = setup_wallets(
bitcoind_url,
bitcoin_wallet_name.as_str(),
monero_wallet_rpc_url,
config,
)
.await?;
bob_swap(
swap_id,
bob_state,
bitcoin_wallet,
monero_wallet,
db,
alice_peer_id,
alice_addr,
)
.await?;
} else {
anyhow::bail!("Unable to construct swap state for swap with id {}")
}
let bob_state = BobState::try_from(db_swap)?;
let (bitcoin_wallet, monero_wallet) = setup_wallets(
bitcoind_url,
bitcoin_wallet_name.as_str(),
monero_wallet_rpc_url,
config,
)
.await?;
bob_swap(
swap_id,
bob_state,
bitcoin_wallet,
monero_wallet,
db,
alice_peer_id,
alice_addr,
)
.await?;
}
}
};
Ok(())
}

@ -60,14 +60,38 @@ pub enum Command {
receive_monero: xmr_btc::monero::Amount,
},
History,
Resume {
Resume(Resume),
}
#[derive(structopt::StructOpt, Debug)]
pub enum Resume {
SellXmr {
#[structopt(long = "swap-id")]
swap_id: Uuid,
#[structopt(long = "connect-peer-id")]
#[structopt(long = "bitcoind-rpc", default_value = "http://127.0.0.1:8332")]
bitcoind_url: Url,
#[structopt(long = "bitcoin-wallet-name")]
bitcoin_wallet_name: String,
#[structopt(
long = "monero-wallet-rpc",
default_value = "http://127.0.0.1:18083/json_rpc"
)]
monero_wallet_rpc_url: Url,
#[structopt(long = "listen-address", default_value = "/ip4/127.0.0.1/tcp/9876")]
listen_addr: Multiaddr,
},
BuyXmr {
#[structopt(long = "swap-id")]
swap_id: Uuid,
#[structopt(long = "counterpart-peer-id")]
alice_peer_id: PeerId,
#[structopt(long = "connect-addr")]
#[structopt(long = "counterpart-addr")]
alice_addr: Multiaddr,
#[structopt(long = "bitcoind-rpc", default_value = "http://127.0.0.1:8332")]
@ -81,11 +105,6 @@ pub enum Command {
default_value = "http://127.0.0.1:18083/json_rpc"
)]
monero_wallet_rpc_url: Url,
// TODO: The listen address is only relevant for Alice, but should be role independent
// see: https://github.com/comit-network/xmr-btc-swap/issues/77
#[structopt(long = "p2p-address", default_value = "/ip4/127.0.0.1/tcp/9876")]
listen_addr: Multiaddr,
},
}

Loading…
Cancel
Save