Configuration is optional
This commit is contained in:
parent
21d5d32d50
commit
2fa10067fb
2 changed files with 14 additions and 8 deletions
|
@ -16,7 +16,6 @@ pub mod error {
|
|||
*/
|
||||
#[derive(Clone, Debug, PartialEq)]
|
||||
pub enum ConfigErrorKind {
|
||||
ConfigNotFound,
|
||||
ConfigParsingFailed,
|
||||
NoConfigFileFound,
|
||||
}
|
||||
|
@ -54,7 +53,6 @@ pub mod error {
|
|||
*/
|
||||
pub fn as_str(e: &ConfigError) -> &'static str {
|
||||
match e.kind() {
|
||||
ConfigErrorKind::ConfigNotFound => "Config not found",
|
||||
ConfigErrorKind::ConfigParsingFailed => "Config parsing failed",
|
||||
ConfigErrorKind::NoConfigFileFound => "No config file found",
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ use libimagstore::store::Store;
|
|||
|
||||
pub struct Runtime<'a> {
|
||||
rtp: PathBuf,
|
||||
configuration: Configuration,
|
||||
configuration: Option<Configuration>,
|
||||
cli_matches: ArgMatches<'a>,
|
||||
store: Store,
|
||||
}
|
||||
|
@ -34,6 +34,8 @@ impl<'a> Runtime<'a> {
|
|||
use std::env;
|
||||
use std::error::Error;
|
||||
|
||||
use configuration::error::ConfigErrorKind;
|
||||
|
||||
let matches = cli_spec.get_matches();
|
||||
let rtp : PathBuf = matches.value_of("runtimepath")
|
||||
.map(PathBuf::from)
|
||||
|
@ -54,11 +56,17 @@ impl<'a> Runtime<'a> {
|
|||
});
|
||||
|
||||
let cfg = Configuration::new(&rtp);
|
||||
if cfg.is_err() {
|
||||
let cause : Option<Box<Error>> = Some(Box::new(cfg.err().unwrap()));
|
||||
return Err(RuntimeError::new(RuntimeErrorKind::Instantiate, cause));
|
||||
}
|
||||
let cfg = cfg.unwrap();
|
||||
let cfg = if cfg.is_err() {
|
||||
let e = cfg.err().unwrap();
|
||||
if e.kind() != ConfigErrorKind::NoConfigFileFound {
|
||||
let cause : Option<Box<Error>> = Some(Box::new(e));
|
||||
return Err(RuntimeError::new(RuntimeErrorKind::Instantiate, cause));
|
||||
} else {
|
||||
None
|
||||
}
|
||||
} else {
|
||||
Some(cfg.unwrap())
|
||||
};
|
||||
|
||||
Store::new(storepath).map(|store| {
|
||||
Runtime {
|
||||
|
|
Loading…
Reference in a new issue