Merge pull request #248 from matthiasbeyer/libimagstore/retrieve-for-module
Add implementation for Store::retrieve_for_module()
This commit is contained in:
commit
9a4c414a7b
2 changed files with 18 additions and 2 deletions
|
@ -33,6 +33,8 @@ pub enum StoreErrorKind {
|
||||||
PreHookExecuteError,
|
PreHookExecuteError,
|
||||||
PostHookExecuteError,
|
PostHookExecuteError,
|
||||||
StorePathLacksVersion,
|
StorePathLacksVersion,
|
||||||
|
GlobError,
|
||||||
|
EncodingError,
|
||||||
// maybe more
|
// maybe more
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,6 +64,8 @@ fn store_error_type_as_str(e: &StoreErrorKind) -> &'static str {
|
||||||
&StoreErrorKind::PreHookExecuteError => "Pre-Hook execution error",
|
&StoreErrorKind::PreHookExecuteError => "Pre-Hook execution error",
|
||||||
&StoreErrorKind::PostHookExecuteError => "Post-Hook execution error",
|
&StoreErrorKind::PostHookExecuteError => "Post-Hook execution error",
|
||||||
&StoreErrorKind::StorePathLacksVersion => "The supplied store path has no version part",
|
&StoreErrorKind::StorePathLacksVersion => "The supplied store path has no version part",
|
||||||
|
&StoreErrorKind::GlobError => "glob() error",
|
||||||
|
&StoreErrorKind::EncodingError => "Encoding error",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@ use toml::{Table, Value};
|
||||||
use regex::Regex;
|
use regex::Regex;
|
||||||
use crossbeam;
|
use crossbeam;
|
||||||
use crossbeam::ScopedJoinHandle;
|
use crossbeam::ScopedJoinHandle;
|
||||||
|
use glob::glob;
|
||||||
|
|
||||||
use error::{ParserErrorKind, ParserError};
|
use error::{ParserErrorKind, ParserError};
|
||||||
use error::{StoreError, StoreErrorKind};
|
use error::{StoreError, StoreErrorKind};
|
||||||
|
@ -307,8 +308,19 @@ impl Store {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Iterate over all StoreIds for one module name
|
/// Iterate over all StoreIds for one module name
|
||||||
pub fn retrieve_for_module(&self, mod_name: &str) -> StoreIdIterator {
|
pub fn retrieve_for_module(&self, mod_name: &str) -> Result<StoreIdIterator> {
|
||||||
unimplemented!();
|
let mut path = self.path().clone();
|
||||||
|
path.push(mod_name);
|
||||||
|
|
||||||
|
if let Some(path) = path.to_str() {
|
||||||
|
let path = [ path, "/*" ].join("");
|
||||||
|
debug!("glob()ing with '{}'", path);
|
||||||
|
glob(&path[..])
|
||||||
|
.map(StoreIdIterator::new)
|
||||||
|
.map_err(|e| StoreError::new(StoreErrorKind::GlobError, Some(Box::new(e))))
|
||||||
|
} else {
|
||||||
|
Err(StoreError::new(StoreErrorKind::EncodingError, None))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Return the `FileLockEntry` and write to disk
|
/// Return the `FileLockEntry` and write to disk
|
||||||
|
|
Loading…
Reference in a new issue