#cli #structopt #clap #derive

structopt-toml

An default value loader from TOML for structopt

16 releases

0.5.1 Jul 9, 2022
0.5.0 Jul 27, 2021
0.4.5 May 6, 2020
0.4.2 Mar 12, 2020
0.2.4 Mar 20, 2018

#174 in Command-line interface

Download history 215/week @ 2023-02-12 181/week @ 2023-02-19 126/week @ 2023-02-26 215/week @ 2023-03-05 169/week @ 2023-03-12 171/week @ 2023-03-19 122/week @ 2023-03-26 101/week @ 2023-04-02 147/week @ 2023-04-09 139/week @ 2023-04-16 203/week @ 2023-04-23 107/week @ 2023-04-30 153/week @ 2023-05-07 72/week @ 2023-05-14 81/week @ 2023-05-21 187/week @ 2023-05-28

505 downloads per month
Used in 2 crates

MIT/Apache

9KB
85 lines

structopt-toml

An default value loader from TOML 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.104"
serde_derive   = "1.0.104"
structopt      = "0.3.11"
structopt-toml = "0.5.1"
toml           = "0.5.6"

Example

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

use serde_derive::Deserialize;
use structopt::StructOpt;
use structopt_toml::StructOptToml;

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

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

The execution result is below.

$ ./example
a:10        // value from TOML 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

~2.1–3.5MB
~68K SLoC