#derive #structopt #clap #cli

macro structopt-yaml-derive

A derive crate of structopt-yaml

2 releases

0.4.6 Apr 15, 2021
0.4.5 Apr 15, 2021

#16 in #structopt

Download history 45/week @ 2023-11-27 9/week @ 2023-12-04 11/week @ 2023-12-11 9/week @ 2023-12-18 3/week @ 2023-12-25 36/week @ 2024-01-08 87/week @ 2024-01-15 27/week @ 2024-01-22 39/week @ 2024-01-29 56/week @ 2024-02-05 81/week @ 2024-02-12 83/week @ 2024-02-19 135/week @ 2024-02-26 72/week @ 2024-03-04 78/week @ 2024-03-11

371 downloads per month
Used in structopt-yaml

MIT/Apache

8KB
164 lines

structopt-yaml

An default value loader from YAML for structopt. It combinates with structopt.

Actions Status Crates.io Docs.rs codecov

Usage

This crate must be used with serde, serde_derive, structopt, and toml explicitly.

[dependencies]
serde          = "1.0"
serde_derive   = "1.0"
serde_yaml     = "0.8"
structopt      = "0.3.21"
structopt-yaml = "0.4.6"

Example

If derive(Deserialize), derive(StructOptYaml) and serde(default) are added to the struct with derive(StructOpt), some functions like from_args_with_yaml can be used.

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);
}

The execution result is below.

$ ./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

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~1.5MB
~33K SLoC