clap-serde

Provides a wrapper to deserialize clap app using serde.

Crates.io License License API Reference

toml

``` 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

``` 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

clap-serde provides a Deserializer for yaml. This requires yaml feature. ``` 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 yaml = yamlrust::Yaml::Array(yamlrust::YamlLoader::loadfromstr(CLAPYAML).expect("not a yaml")); let app = clapserde::yamltoapp(&yaml).expect("parse failed from yaml"); asserteq!(app.getname(), "appclapserde"); ```

features

env

Enables env feature in clap.

yaml

Enables to use yaml. Enabled by default.

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.