diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2018-05-01 17:49:41 +0200 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2018-05-02 17:46:45 +0200 |
commit | 0dbef993c102598f5d58a04e40bb6204d2ab4839 (patch) | |
tree | 489c3f3e7ee3986a1dadd7326e3d8546c1f2fe9f /bin | |
parent | 258d9f90d305d4ea7c5c0b138b63798a69d4a82e (diff) |
Adapt "imag store verify" implementation for removed Store::walk()
Diffstat (limited to 'bin')
-rw-r--r-- | bin/core/imag-store/src/verify.rs | 51 |
1 files changed, 18 insertions, 33 deletions
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" - }; - - 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 - }, - } - }, + .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()); + status }); if result { |