diff --git a/xmtp_debug/src/app/generate/identity.rs b/xmtp_debug/src/app/generate/identity.rs index 838d129c3..f82c49582 100644 --- a/xmtp_debug/src/app/generate/identity.rs +++ b/xmtp_debug/src/app/generate/identity.rs @@ -1,10 +1,10 @@ -use std::sync::Arc; +use std::{collections::HashSet, sync::Arc}; use crate::app::store::{Database, IdentityStore}; use crate::app::{self, types::Identity}; use crate::args; -use color_eyre::eyre::{self, ensure, Result}; +use color_eyre::eyre::{self, bail, Result}; use indicatif::{ProgressBar, ProgressStyle}; /// Identity Generation @@ -128,8 +128,19 @@ impl GenerateIdentity { total_states = states.len(), "ensuring identities registered & latest association state loaded..." ); - for state in states.into_iter() { - ensure!(state.is_ok()) + let errs = states + .into_iter() + .filter_map(|s| s.err()) + .map(|e| e.to_string()) + .collect::>(); + let unique: HashSet = HashSet::from_iter(errs.clone()); + if !unique.is_empty() { + tracing::error!("{} errors during identity generation", errs.len()); + tracing::error!("{} unique errors during identity generation", unique.len()); + for err in unique.into_iter() { + error!(err); + } + bail!("Error generation failed"); } Ok(identities) }