diff --git a/bin/core/imag-store/src/verify.rs b/bin/core/imag-store/src/verify.rs index d60f7086..900fde0b 100644 --- a/bin/core/imag-store/src/verify.rs +++ b/bin/core/imag-store/src/verify.rs @@ -21,49 +21,34 @@ use std::ops::Deref; use libimagrt::runtime::Runtime; use libimagutil::warn_exit::warn_exit; +use libimagerror::trace::MapErrTrace; +use libimagerror::iter::TraceIterator; use libimagstore::store::Header; -use libimagstore::store::StoreObject; /// Verify the store. /// /// This function is not intended to be called by normal programs but only by `imag-store`. pub fn verify(rt: &Runtime) { - use libimagerror::trace::trace_error_dbg; - info!("Header | Content length | Path"); info!("-------+----------------+-----"); let result = rt .store() - .walk("") - .into_iter() - .all(|res| match res { - StoreObject::Collection(_) => true, - StoreObject::Id(id) => { - match rt.store().get(id.clone()) { - Ok(Some(fle)) => { - let p = fle.get_location(); - let content_len = fle.get_content().len(); - let header = if fle.get_header().verify().is_ok() { - "ok" - } else { - "broken" - }; + .entries() + .map_err_trace_exit_unwrap(1) + .into_get_iter() + .trace_unwrap_exit(1) + .filter_map(|x| x) + .all(|fle| { + let p = fle.get_location(); + let content_len = fle.get_content().len(); + let (header, status) = if fle.get_header().verify().is_ok() { + ("ok", true) + } else { + ("broken", false) + }; - info!("{: >6} | {: >14} | {:?}", header, content_len, p.deref()); - true - }, - - Ok(None) => { - info!("{: >6} | {: >14} | {:?}", "?", "couldn't load", id.local()); - true - }, - - Err(e) => { - trace_error_dbg(&e); - false - }, - } - }, + info!("{: >6} | {: >14} | {:?}", header, content_len, p.deref()); + status }); if result {