Add more context in error messages
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
This commit is contained in:
parent
5f07d7d21a
commit
741e8acb8a
2 changed files with 14 additions and 3 deletions
|
@ -25,6 +25,7 @@ use libimagerror::errors::ErrorMsg as EM;
|
|||
use crate::contact::Contact;
|
||||
use failure::Fallible as Result;
|
||||
use failure::Error;
|
||||
use failure::ResultExt;
|
||||
|
||||
pub struct ContactIter<'a>(StoreIdIterator, &'a Store);
|
||||
|
||||
|
@ -44,12 +45,21 @@ impl<'a> Iterator for ContactIter<'a> {
|
|||
loop {
|
||||
match self.0.next() {
|
||||
None => return None,
|
||||
Some(Err(e)) => return Some(Err(e).map_err(Error::from)),
|
||||
Some(Err(e)) => {
|
||||
let e = Err(e)
|
||||
.context("Found error while iterating over contacts")
|
||||
.map_err(Error::from);
|
||||
|
||||
return Some(e)
|
||||
},
|
||||
Some(Ok(sid)) => match self.1.get(sid.clone()).map_err(From::from) {
|
||||
Err(e) => return Some(Err(e)),
|
||||
Ok(None) => return
|
||||
Some(Err(Error::from(EM::EntryNotFound(sid.local_display_string())))),
|
||||
Ok(Some(entry)) => match entry.is_contact().map_err(Error::from) {
|
||||
Ok(Some(entry)) => match entry.is_contact()
|
||||
.context("Cannot check whether entry is a contact")
|
||||
.map_err(Error::from)
|
||||
{
|
||||
Ok(true) => return Some(Ok(entry)),
|
||||
Ok(false) => continue,
|
||||
Err(e) => return Some(Err(e)),
|
||||
|
|
|
@ -27,6 +27,7 @@ use toml_query::insert::TomlValueInsertExt;
|
|||
use vobject::vcard::Vcard;
|
||||
use failure::Error;
|
||||
use failure::Fallible as Result;
|
||||
use failure::ResultExt;
|
||||
|
||||
use libimagstore::storeid::StoreId;
|
||||
use libimagstore::iter::Entries;
|
||||
|
@ -152,7 +153,7 @@ impl<'a> ContactStore<'a> for Store {
|
|||
///
|
||||
/// That means calculating the StoreId and the Value from the vcard data
|
||||
fn prepare_fetching_from_store(buf: &str) -> Result<(StoreId, Value)> {
|
||||
let vcard = Vcard::build(&buf).map_err(Error::from)?;
|
||||
let vcard = Vcard::build(&buf).context("Cannot parse Vcard").map_err(Error::from)?;
|
||||
debug!("Parsed: {:?}", vcard);
|
||||
|
||||
let uid = vcard.uid()
|
||||
|
|
Loading…
Reference in a new issue