#yaml #json #structopt #clap #cli #serde-default

structopt-yaml

为 structopt 提供从 YAML 加载默认值的工具

2 个版本

0.4.6 2021 年 4 月 15 日
0.4.5 2021 年 4 月 15 日

#892 in 命令行界面

Download history 97/week @ 2024-03-06 109/week @ 2024-03-13 79/week @ 2024-03-20 122/week @ 2024-03-27 173/week @ 2024-04-03 105/week @ 2024-04-10 91/week @ 2024-04-17 142/week @ 2024-04-24 58/week @ 2024-05-01 49/week @ 2024-05-08 50/week @ 2024-05-15 101/week @ 2024-05-22 134/week @ 2024-05-29 159/week @ 2024-06-05 135/week @ 2024-06-12 80/week @ 2024-06-19

531 每月下载量

MIT/Apache 许可协议

9KB
81

structopt-yaml

为 structopt 提供从 YAML 或 JSON 加载默认值的工具。它与 structopt 结合使用。由 structopt-toml 衍生。

Crates.io Docs.rs codecov

用法

必须与 serdeserde_derivestructoptserde_yaml 显式使用。

[dependencies]
serde          = "1.0"
serde_derive   = "1.0"
serde_yaml     = "0.8.17"
structopt      = "0.3.11"
structopt-yaml = "0.4.6"

示例

如果向结构体中添加 derive(Deserialize)derive(StructOptYaml)serde(default),则可以使用一些函数,如 from_args_with_yaml

use serde_derive::Deserialize;
use structopt::StructOpt;
use structopt_yaml::StructOptYaml;

#[derive(Debug, Deserialize, StructOpt, StructOptYaml)]
#[serde(default)]
struct Opt {
    #[structopt(default_value = "0", short = "a")] a: i32,
    #[structopt(default_value = "0", short = "b")] b: i32,
}

fn main() {
    let yaml_str = r#"
        a: 10
    "#;
    let opt = Opt::from_args_with_yaml(yaml_str).expect("yaml parse failed");
    println!("a:{}", opt.a);
    println!("b:{}", opt.b);
}

执行结果如下。

$ ./example
a:10        // value from YAML string
b:0         // value from default_value of structopt

$ ./example -a 20
a:20        // value from command line argument
b:0

许可证

根据您的选择,许可协议为以下之一。

贡献

除非您明确声明,否则任何有意提交以包含在作品中的贡献,根据 Apache-2.0 许可协议定义,应如上所述双重许可,无需任何附加条款或条件。

依赖项

~3–5.5MB
~85K SLoC