Merge pull request #262 from matthiasbeyer/libimagstore/warn-to-err

Libimagstore/warn-to-err
This commit is contained in:
Matthias Beyer 2016-03-23 18:25:35 +01:00
commit be551feb83
7 changed files with 29 additions and 78 deletions

View file

@ -1,5 +1,4 @@
use toml::Value;
use hook::position::HookPosition;
/// Check whether the configuration is valid for the store
///
@ -48,10 +47,6 @@ pub fn config_is_valid(config: &Option<Value>) -> bool {
return true;
}
fn has_key_with_map(v: &BTreeMap<String, Value>, key: &str) -> bool {
v.get(key).map(|t| match t { &Value::Table(_) => true, _ => false }).unwrap_or(false)
}
fn has_key_with_string_ary(v: &BTreeMap<String, Value>, key: &str) -> bool {
v.get(key)
.map(|t| match t {
@ -187,10 +182,6 @@ impl AspectConfig {
}
}
pub fn config(&self) -> &Value {
&self.config
}
fn is_parallel(init: &Value) -> bool {
match init {
&Value::Table(ref t) =>

View file

@ -39,8 +39,6 @@ impl Aspect {
impl StoreIdAccessor for Aspect {
fn access(&self, id: &StoreId) -> HookResult<()> {
use crossbeam;
use std::thread;
use std::thread::JoinHandle;
let accessors : Vec<HDA> = self.hooks.iter().map(|h| h.accessor()).collect();
if !accessors.iter().all(|a| match a { &HDA::StoreIdAccess(_) => true, _ => false }) {
@ -56,7 +54,7 @@ impl StoreIdAccessor for Aspect {
&HDA::StoreIdAccess(accessor) => accessor.access(id),
_ => unreachable!(),
}
.map_err(|e| ()) // TODO: We're losing the error cause here
.map_err(|_| ()) // TODO: We're losing the error cause here
})
})
})
@ -108,8 +106,6 @@ impl MutableHookDataAccessor for Aspect {
impl NonMutableHookDataAccessor for Aspect {
fn access(&self, fle: &FileLockEntry) -> HookResult<()> {
use crossbeam;
use std::thread;
use std::thread::JoinHandle;
let accessors : Vec<HDA> = self.hooks.iter().map(|h| h.accessor()).collect();
if !accessors.iter().all(|a| match a { &HDA::NonMutableAccess(_) => true, _ => false }) {
@ -125,7 +121,7 @@ impl NonMutableHookDataAccessor for Aspect {
&HDA::NonMutableAccess(accessor) => accessor.access(fle),
_ => unreachable!(),
}
.map_err(|e| ()) // TODO: We're losing the error cause here
.map_err(|_| ()) // TODO: We're losing the error cause here
})
})
})

View file

@ -2,9 +2,6 @@ use std::fmt::Debug;
use toml::Value;
use self::error::HookError;
use store::FileLockEntry;
pub mod accessor;
pub mod aspect;
pub mod error;

View file

@ -31,30 +31,6 @@ fn create_file<A: AsRef<Path>>(p: A) -> ::std::io::Result<File> {
impl LazyFile {
/**
* Create a new LazyFile instance from a Path
*/
pub fn new(p: PathBuf) -> LazyFile {
LazyFile::Absent(p)
}
/**
* Create a new LazyFile instance from an already existing file
*/
pub fn new_with_file(f: File) -> LazyFile {
LazyFile::File(f)
}
/**
* Get the file behind a LazyFile object
*/
pub fn get_file(&mut self) -> Result<&File, StoreError> {
match self.get_file_mut() {
Ok(file) => Ok(&*file),
Err(e) => Err(e)
}
}
/**
* Get the mutable file behind a LazyFile object
*/
@ -107,9 +83,8 @@ impl LazyFile {
#[cfg(test)]
mod test {
use super::LazyFile;
use std::io::{Read, Write, Seek, SeekFrom};
use std::io::{Read, Write};
use std::path::PathBuf;
use std::fs::File;
use tempdir::TempDir;
fn get_dir() -> TempDir {
@ -121,7 +96,7 @@ mod test {
let dir = get_dir();
let mut path = PathBuf::from(dir.path());
path.set_file_name("test1");
let mut lf = LazyFile::new(path);
let mut lf = LazyFile::Absent(path);
write!(lf.create_file().unwrap(), "Hello World").unwrap();
dir.close().unwrap();
@ -132,7 +107,7 @@ mod test {
let dir = get_dir();
let mut path = PathBuf::from(dir.path());
path.set_file_name("test2");
let mut lf = LazyFile::new(path.clone());
let mut lf = LazyFile::Absent(path.clone());
{
let mut file = lf.create_file().unwrap();
@ -142,7 +117,7 @@ mod test {
}
{
let mut file = lf.get_file().unwrap();
let mut file = lf.get_file_mut().unwrap();
let mut s = Vec::new();
file.read_to_end(&mut s).unwrap();
assert_eq!(s, "Hello World".to_string().into_bytes());

View file

@ -1,3 +1,17 @@
#![deny(
non_camel_case_types,
non_snake_case,
path_statements,
trivial_numeric_casts,
unstable_features,
unused_allocation,
unused_import_braces,
unused_imports,
unused_mut,
unused_qualifications,
while_true,
)]
#[macro_use] extern crate log;
#[macro_use] extern crate version;
extern crate fs2;

View file

@ -15,8 +15,6 @@ use std::ops::DerefMut;
use toml::{Table, Value};
use regex::Regex;
use crossbeam;
use crossbeam::ScopedJoinHandle;
use glob::glob;
use error::{ParserErrorKind, ParserError};
@ -25,12 +23,9 @@ use storeid::{StoreId, StoreIdIterator};
use lazyfile::LazyFile;
use hook::aspect::Aspect;
use hook::result::HookResult;
use hook::accessor::{ MutableHookDataAccessor,
NonMutableHookDataAccessor,
StoreIdAccessor,
HookDataAccessor,
HookDataAccessorProvider};
StoreIdAccessor};
use hook::position::HookPosition;
use hook::Hook;
@ -81,7 +76,7 @@ impl StoreEntry {
// TODO:
let mut file = file.unwrap();
let entry = Entry::from_file(self.id.clone(), &mut file);
file.seek(SeekFrom::Start(0));
file.seek(SeekFrom::Start(0)).ok();
entry
}
} else {
@ -95,11 +90,12 @@ impl StoreEntry {
let file = try!(self.file.create_file());
assert_eq!(self.id, entry.location);
file.write_all(entry.to_str().as_bytes());
}
file.write_all(entry.to_str().as_bytes())
.map_err(|e| StoreError::new(StoreErrorKind::FileError, Some(Box::new(e))))
} else {
Ok(())
}
}
}
/// The Store itself, through this object one can interact with IMAG's entries
@ -424,7 +420,7 @@ impl Store {
debug!(" in position: {:?}", position);
debug!(" with aspect: {:?}", aspect_name);
let mut guard = match position {
let guard = match position {
HookPosition::PreRead => self.pre_read_aspects.clone(),
HookPosition::PostRead => self.post_read_aspects.clone(),
HookPosition::PreCreate => self.pre_create_aspects.clone(),
@ -437,7 +433,7 @@ impl Store {
HookPosition::PostDelete => self.post_delete_aspects.clone(),
};
let mut guard = guard
let guard = guard
.deref()
.lock()
.map_err(|_| StoreError::new(StoreErrorKind::HookRegisterError, None));
@ -505,22 +501,6 @@ impl Store {
.map_err(|e| StoreError::new(StoreErrorKind::PreHookExecuteError, Some(Box::new(e))))
}
fn execute_hooks_for_file(&self,
aspects: Arc<Mutex<Vec<Aspect>>>,
fle: &FileLockEntry)
-> Result<()>
{
let guard = aspects.deref().lock();
if guard.is_err() { return Err(StoreError::new(StoreErrorKind::PreHookExecuteError, None)) }
guard.unwrap().deref().iter()
.fold(Ok(()), |acc, aspect| {
debug!("[Aspect][exec]: {:?}", aspect);
acc.and_then(|_| (aspect as &NonMutableHookDataAccessor).access(fle))
})
.map_err(|e| StoreError::new(StoreErrorKind::PreHookExecuteError, Some(Box::new(e))))
}
}
impl Drop for Store {
@ -1306,8 +1286,6 @@ mod test {
#[test]
fn test_verification_current_version() {
use version;
use super::verify_header_consistency;
let mut header = BTreeMap::new();

View file

@ -82,7 +82,7 @@ macro_rules! module_entry_path_mod {
}
impl $crate::storeid::IntoStoreId for ModuleEntryPath {
fn into_storeid(mut self) -> $crate::storeid::StoreId {
fn into_storeid(self) -> $crate::storeid::StoreId {
self.0
}
}