#[macro_use]
extern crate snafu;

#[macro_use]
extern crate serde_derive;

#[cfg(test)]
#[macro_use]
extern crate serde_json;

#[cfg(feature = "reqwest")]
extern crate reqwest;

extern crate chrono;
extern crate indexmap;
extern crate ommui_file_loading;
extern crate ommui_string_patterns;
extern crate serde;
extern crate uuid;

#[cfg(feature = "client")]
pub mod client;
#[cfg(feature = "filesystem")]
pub mod filesystem;

pub mod device;
pub mod error;
pub mod ommui;
pub mod samplic;

pub use error::Error;

pub type Result<T, E = Error> = std::result::Result<T, E>;

use uuid::Uuid;

trait LoadFromPathPattern: Sized {
    fn load_from_path_pattern(pattern: &str) -> Result<Self>;
}
