config-plus 0.2.2

对config库的增强
Documentation
//! 为结构体生成一个`config`方法,调用该方法可以读取配置文件中的属性
//! 使用方式
//! `#[derive(Debug, Deserialize, Configuration)]`
//! `#[config(prefix = "push.file", file(path = "application.yml", require = true)]`
//! 
//! `#[config]`可以配置的属性
//! - prefix: 读取配置文件的前缀
//! - file: 配置文件的路径(可以配置多个file属性)
//!   + path: 文件路径
//!   + require: 文件是否必须(默认false)
//!   + format: 非必填(默认为文件名后缀),返回的字符串的格式(支持 toml、json、yaml、yml、json5、ini、ron)
//! - env: 通过指定环境变量来指定文件路径(可以配置多个env属性)
//!   + name: 环境变量名(如果通过name获取不到值则什么都不做)
//!   + require: 文件是否必须(默认false)
//!   + format: 非必填(默认为文件名后缀),返回的字符串的格式(支持 toml、json、yaml、yml、json5、ini、ron)
//! - http: 配置http属性(可以配置多个http属性)
//!   + url: http的url
//!   + method: 请求方法(只支持get和post两种)
//!   + format: 必填,返回的字符串的格式(支持 toml、json、yaml、yml、json5、ini、ron)
//! - environment: 是否从环境变量中读取,默认为true
//! > 优先级: http > environment > env > file

mod http;

use config::{FileFormat, FileSourceFile};
pub use http::*;
pub use config_plus_macro::*;


pub fn convert_format(format: &str) -> FileFormat {
    match format {
        "toml" => FileFormat::Toml,
        "json" => FileFormat::Json,
        "yaml" => FileFormat::Yaml,
        "ini" => FileFormat::Ini,
        "ron" => FileFormat::Ron,
        "json5" => FileFormat::Json5,
        _ => unreachable!("不支持格式"),
    }
}


pub fn get_file(path: &str, format: &str) -> File<FileSourceFile, FileFormat> {
    let format = convert_format(format);
    File::new(path, format)
}