Add VersionsViewer
This commit is contained in:
parent
42aaf894dc
commit
9c994b2011
2 changed files with 55 additions and 0 deletions
|
@ -1,2 +1,3 @@
|
||||||
pub mod plain;
|
pub mod plain;
|
||||||
pub mod stdout;
|
pub mod stdout;
|
||||||
|
pub mod versions;
|
||||||
|
|
54
libimagentryview/src/builtin/versions.rs
Normal file
54
libimagentryview/src/builtin/versions.rs
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
use libimagstore::store::Entry;
|
||||||
|
use libimagstore::store::Store;
|
||||||
|
use libimagerror::into::IntoError;
|
||||||
|
|
||||||
|
use viewer::Viewer;
|
||||||
|
use result::Result;
|
||||||
|
use error::ViewErrorKind as VEK;
|
||||||
|
|
||||||
|
pub struct VersionsViewer<'a> {
|
||||||
|
store: &'a Store,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a> VersionsViewer<'a> {
|
||||||
|
|
||||||
|
pub fn new(store: &'a Store) -> VersionsViewer<'a> {
|
||||||
|
VersionsViewer {
|
||||||
|
store: store,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a> Viewer for VersionsViewer<'a> {
|
||||||
|
|
||||||
|
fn view_entry(&self, entr: &Entry) -> Result<()> {
|
||||||
|
use glob::glob;
|
||||||
|
|
||||||
|
entr.get_location()
|
||||||
|
.clone()
|
||||||
|
.storified(self.store)
|
||||||
|
.to_str()
|
||||||
|
.and_then(|s| s.split("~").next())
|
||||||
|
.map(|component| {
|
||||||
|
glob(&format!("{}~*", component)[..])
|
||||||
|
.map_err(|_| VEK::PatternError.into_error())
|
||||||
|
.and_then(|paths| {
|
||||||
|
for entry in paths {
|
||||||
|
let p = match entry {
|
||||||
|
Err(_) => return Err(VEK::GlobError.into_error()),
|
||||||
|
Ok(p) => p,
|
||||||
|
};
|
||||||
|
let p = p.file_name()
|
||||||
|
.and_then(|s| s.to_str())
|
||||||
|
.unwrap(); // TODO
|
||||||
|
println!("{}", p);
|
||||||
|
};
|
||||||
|
Ok(())
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.unwrap_or(Err(VEK::PatternBuildingError.into_error()))
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue