add --fail-fast argument for responding to confirmations

This commit is contained in:
Carson McManus 2022-02-21 12:14:15 -05:00
parent b1d559ea00
commit c11593e7e4

View file

@ -90,6 +90,11 @@ fn cli() -> App<'static, 'static> {
.takes_value(false)
.help("Accept all open trade confirmations. Does not open interactive interface.")
)
.arg(
Arg::with_name("fail-fast")
.takes_value(false)
.help("If submitting a confirmation response fails, exit immediately.")
)
)
.subcommand(
App::new("setup")
@ -409,22 +414,49 @@ fn run() -> anyhow::Result<()> {
}
}
let mut any_failed = false;
let fail_fast = trade_matches.is_present("fail-fast");
if trade_matches.is_present("accept-all") {
info!("accepting all confirmations");
for conf in &confirmations {
let result = account.accept_confirmation(conf);
if result.is_err() {
warn!("accept confirmation result: {:?}", result);
any_failed = true;
if fail_fast {
return result;
}
} else {
debug!("accept confirmation result: {:?}", result);
}
}
} else {
if termion::is_tty(&stdout()) {
let (accept, deny) = tui::prompt_confirmation_menu(confirmations);
for conf in &accept {
let result = account.accept_confirmation(conf);
if result.is_err() {
warn!("accept confirmation result: {:?}", result);
any_failed = true;
if fail_fast {
return result;
}
} else {
debug!("accept confirmation result: {:?}", result);
}
}
for conf in &deny {
let result = account.deny_confirmation(conf);
debug!("deny confirmation result: {:?}", result);
if result.is_err() {
warn!("deny confirmation result: {:?}", result);
any_failed = true;
if fail_fast {
return result;
}
} else {
debug!("deny confirmation result: {:?}", result);
}
}
} else {
warn!("not a tty, not showing menu");
@ -433,6 +465,10 @@ fn run() -> anyhow::Result<()> {
}
}
}
if any_failed {
error!("Failed to respond to some confirmations.");
}
}
manifest.save(&passkey)?;