clap-serde

Provides a wrapper to deserialize clap app using serde.

Crates.io License License API Reference

toml

```rust const CLAPTOML: &'static str = r#" name = "appclapserde" version = "1.0" author = "tomltester" about = "test-clap-serde" [subcommands] sub1 = { about = "subcommand1" } [subcommands.sub2] about = "subcommand2" [args] apple = { short = "a" } banana = { short = "b", long = "banana", aliases = ["musa_spp"] } [groups] fruit = { args = ["apple", "banana"] } "#;

let app: clap::App = toml::fromstr::(CLAPTOML) .expect("parse failed") .into(); asserteq!(app.getname(), "appclapserde"); asserteq!(app.getabout(), Some("test-clap-serde")); ```

json

```rust const CLAPJSON: &'static str = r#"{ "name" : "appclapserde", "version" : "1.0" , "author" : "jsontester", "about" : "test-clap-serde", "subcommands" : [ { "sub1" : {"about" : "subcommand1"}}, { "sub2" : {"about" : "subcommand2"}} ], "args" : [ { "apple" : {"short" : "a" } }, { "banana" : {"short" : "b", "long" : "banana", "aliases" : [ "musa_spp" ]} } ], "groups" : { "fruit" : { "args" : ["apple", "banana"] } } }"#;

let app: clap::App = serdejson::fromstr::(CLAPJSON) .expect("parse failed") .into(); asserteq!(app.getname(), "appclapserde"); asserteq!(app.get_about(), Some("test-clap-serde")); ```

yaml

```rust const CLAPYAML: &'static str = r#" name: appclapserde version : "1.0" about : yamlsupport! author : yaml_supporter

args: - apple : short: a - banana: short: b long: banana aliases : - musa_spp

subcommands: - sub1: about : subcommand1 - sub2: about : subcommand2

"#; let app: clapserde::CommandWrap = serdeyaml::fromstr(CLAPYAML).expect("fail to make yaml"); asserteq!(app.getname(), "appclapserde"); ```

features

env

Enables env feature in clap.

yaml (deprecated, use serde-yaml instead)

Enables to use yaml.

color

Enablse color feature in clap.

(key case settings)

Settings names format for keys and AppSettings.

snake-case-key

snake_case. Enabled by default.

pascal-case-key

PascalCase. Same as variants name in enum at AppSettings.

kebab-case-key

kebab-case.

allow-deprecated

Allow deprecated keys, settings. Enabled by default.

override-args

Override a Arg with DeserializeSeed.

```rust

#[cfg(feature = "override-arg")]

{

use clap::{Command, Arg};

use serde::de::DeserializeSeed;

const CLAPTOML: &str = r#" name = "appclapserde" version = "1.0" author = "aobat" about = "test-clap-serde" [args] apple = { short = "a" } "#; let app = Command::new("app").arg(Arg::new("apple").defaultvalue("aaa")); let wrap = clapserde::CommandWrap::from(app); let mut de = toml::Deserializer::new(CLAPTOML); let wrap2 = wrap.deserialize(&mut de).unwrap(); let apple = wrap2 .getarguments() .find(|a| a.getid() == "apple") .unwrap(); assert!(apple.getshort() == Some('a')); assert!(apple.getdefault_values() == ["aaa"]);

}

```