Crates.io | structopt-yaml |
lib.rs | structopt-yaml |
version | 0.4.6 |
source | src |
created_at | 2021-04-15 05:26:20.494838 |
updated_at | 2021-04-15 13:37:40.165796 |
description | An default value loader from YAML for structopt |
homepage | |
repository | https://github.com/mstump/structopt-yaml |
max_upload_size | |
id | 384672 |
size | 28,871 |
An default value loader from YAML or JSON for structopt. It combinates with structopt. Derived from structopt-toml.
This crate must be used with serde
, serde_derive
, structopt
, and serde_yaml
explicitly.
[dependencies]
serde = "1.0"
serde_derive = "1.0"
serde_yaml = "0.8.17"
structopt = "0.3.11"
structopt-yaml = "0.4.6"
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
Licensed under either of at your option.
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.