archive
/
md-pdf-rs
Archived
1
Fork 0
This repository has been archived on 2023-03-26. You can view files and clone it, but cannot push or open issues or pull requests.
md-pdf-rs/src/config/mod.rs

40 lines
1022 B
Rust

use serde_yaml;
use serde_yaml::Value;
use std::path::PathBuf;
use std::collections::HashMap;
use utils::result_prefix;
pub mod read;
pub mod validate;
pub mod consts;
pub mod validate_types;
#[derive(Debug, Serialize, Deserialize, Default, Clone)]
pub struct Config {
pub input: Vec<PathBuf>,
pub output: HashMap<String, PathBuf>,
pub title: String,
pub verbosity: u64
}
impl Config {
fn new(raw: Value) -> Config {
return Config {
input: read::get_input_files(raw.clone()),
output: read::get_output_files(raw.clone()),
title: read::get_string(&raw, "title"),
..Default::default()
};
}
}
pub fn get_config() -> Result<Config, String> {
let config_str = try!(read::read());
let config: Value =
try!(result_prefix(serde_yaml::from_str(&config_str), "Config Parse Error".into()));
try!(result_prefix(validate::validate(config.clone()), "Config Validation Error".into()));
return Ok(Config::new(config));
}