2个版本
0.1.1 | 2024年7月22日 |
---|---|
0.1.0 | 2024年3月28日 |
324 在 过程宏
每月130次下载
24KB
430 行
Clap Config
自动合并clap应用程序的命令行参数、环境变量、配置文件和默认值。
目标是易于使用,并将所有clap配置留给clap处理,同时移除创建配置结构体并将其与clap合并的样板代码。
使用方法
use clap::CommandFactory;
use clap::Parser;
use clap_config::ClapConfig;
use std::fs;
#[derive(ClapConfig, Parser, Debug)]
pub struct Opts {
#[clap(long)]
flag: String,
}
// You can use any file format that implements Deserialize.
let config_str = fs::read_to_string("/path/to/config.yaml").unwrap();
// Build an ArgMatches so we can see where each value comes from.
let matches = <Opts as CommandFactory>::command().get_matches();
// Build an instance of the auto-generated <YourStruct>Config struct
let config: OptsConfig = serde_yaml::from_str(&config_str).unwrap();
// Merge the two together into your actual struct.
let opts = Opts::from_merged(matches, Some(config));
待办事项
- 在生成的结构体上设置serde标志,如
#[serde)]
。 - 在配置文件中设置必填参数。
- 在配置文件中设置位置参数
依赖项
~3–15MB
~146K SLoC