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

48 lines
1.2 KiB
Rust
Raw Normal View History

2017-07-17 09:52:22 +01:00
use serde_yaml;
2017-07-18 09:20:39 +01:00
use serde_yaml::Value;
2017-07-18 13:39:31 +01:00
use std::path::PathBuf;
2017-07-19 19:54:10 +01:00
use std::collections::HashMap;
2017-07-26 15:22:20 +01:00
use utils::result_prefix;
2017-07-17 09:52:22 +01:00
pub mod read;
pub mod validate;
2017-07-17 09:59:54 +01:00
pub mod consts;
2017-07-19 22:10:47 +01:00
pub mod validate_types;
2017-09-10 17:59:11 +01:00
pub mod csl;
2017-07-17 09:52:22 +01:00
2017-08-14 22:10:05 +01:00
#[derive(Debug, Serialize, Deserialize, Default, Clone)]
2017-07-17 09:52:22 +01:00
pub struct Config {
2017-07-20 09:14:48 +01:00
pub input: Vec<PathBuf>,
pub output: HashMap<String, PathBuf>,
2017-07-20 09:24:04 +01:00
pub title: String,
2017-09-10 18:51:40 +01:00
pub verbosity: u64,
2017-09-10 19:09:21 +01:00
pub references: Option<References>
2017-09-10 18:51:40 +01:00
}
#[derive(Debug, Serialize, Deserialize, Default, Clone)]
pub struct References {
pub bibliography: PathBuf,
pub csl: PathBuf
2017-07-17 09:52:22 +01:00
}
impl Config {
2017-07-18 09:40:03 +01:00
fn new(raw: Value) -> Config {
2017-07-18 09:20:39 +01:00
return Config {
2017-08-14 22:10:05 +01:00
input: read::get_input_files(raw.clone()),
output: read::get_output_files(raw.clone()),
2017-07-19 20:06:57 +01:00
title: read::get_string(&raw, "title"),
2017-09-10 18:51:40 +01:00
references: read::get_references(raw.clone()),
2017-07-18 09:20:39 +01:00
..Default::default()
};
2017-07-17 14:53:18 +01:00
}
2017-07-17 09:52:22 +01:00
}
2017-07-21 19:25:39 +01:00
pub fn get_config() -> Result<Config, String> {
2017-07-26 15:22:20 +01:00
let config_str = try!(read::read());
2017-08-14 22:10:05 +01:00
let config: Value =
2017-07-26 15:33:13 +01:00
try!(result_prefix(serde_yaml::from_str(&config_str), "Config Parse Error".into()));
2017-08-14 22:10:05 +01:00
try!(result_prefix(validate::validate(config.clone()), "Config Validation Error".into()));
2017-07-21 19:25:39 +01:00
return Ok(Config::new(config));
2017-07-17 09:52:22 +01:00
}