#config-parser #clap-parser #arg #default-value #parse #arguments-parser #config-file

clap_config

自动合并clap应用程序的命令行参数、环境变量、配置文件和默认值

2个版本

0.1.1 2024年7月22日
0.1.0 2024年3月28日

324过程宏

Download history 1/week @ 2024-06-05 88/week @ 2024-07-17 36/week @ 2024-07-24 6/week @ 2024-07-31

每月130次下载

MIT/Apache

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