aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/lib.rs b/src/lib.rs
index f93f7fa..24b1ee7 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -2,6 +2,9 @@
#[macro_use]
extern crate log;
+#[macro_use]
+extern crate error_chain;
+
extern crate toml;
extern crate modelica_parser;
@@ -14,6 +17,12 @@ use std::fs;
use std::io::Read;
use std::fs::File;
+mod errors {
+ // Create the Error, ErrorKind, ResultExt, and Result types
+ error_chain! { }
+}
+pub use errors::*;
+
#[derive(Debug, PartialEq)]
pub enum ModelVarType {
Independent,
@@ -39,7 +48,7 @@ pub struct ModelEntry {
pub markdown: String,
}
-pub fn load_model_entry(p: &Path) -> Result<ModelEntry, String> {
+pub fn load_model_entry(p: &Path) -> Result<ModelEntry> {
debug!("Attempting to load model from: {:?}", p);
let ast = {
@@ -65,9 +74,13 @@ pub fn load_model_entry(p: &Path) -> Result<ModelEntry, String> {
}
pub fn search_models(p: &Path) -> Vec<String> {
- if fs::metadata(p).unwrap().is_dir() {
+ let metadata = match fs::metadata(p) {
+ Err(_) => return vec![],
+ Ok(m) => m,
+ };
+ if metadata.is_dir() {
fs::read_dir(p)
- .unwrap()
+ .unwrap() // exists and is_dir(); could be a race condition though?
.map(|x| x.unwrap())
.filter(|x| x.metadata().unwrap().is_dir())
.filter(|x| x.path().join("model.modelica").exists())