#clap #cli #parse #args #argument

auto-args

Parse command line arguments by defining a struct

9 releases

0.2.7 Jun 11, 2020
0.2.6 Feb 16, 2020
0.2.4 Aug 31, 2019
0.2.1 Jul 31, 2019
0.1.0 Jul 29, 2019

#152 in Command-line interface

Download history 8/week @ 2021-02-23 23/week @ 2021-03-02 46/week @ 2021-03-09 33/week @ 2021-03-16 28/week @ 2021-03-23 13/week @ 2021-03-30 18/week @ 2021-04-06 30/week @ 2021-04-13 90/week @ 2021-04-20 13/week @ 2021-04-27 36/week @ 2021-05-04 12/week @ 2021-05-11 21/week @ 2021-05-18 24/week @ 2021-05-25 32/week @ 2021-06-01 29/week @ 2021-06-08

148 downloads per month
Used in vector3d

Apache-2.0/MIT

39KB
602 lines

AutoArgs Build Status

Parse command line arguments by defining a struct. It combines clap with custom derive.

The basic idea is that you define a type that represents the information you want on the command-line from the person running your program, and derive(AutoArgs) on that type, and then call YourType::from_args() to find out what your user gave you.

Differences from ClapMe

AutoArgs is essentially equivalent to ClapMe. It only differs in implementation, speed of compilation, help messages, and error messages.

Differences from structopt

StructOpt is a tool that serves the same function as auto-args, but with a different philosophy. StructOpt strives to be as expressive as clap, and to enable all features clap does, and with a tightly coupled API. It does this by extensive use of attributes such as #[structopt(long = "long-name")], which define the behavior and property of each flag. This makes it powerful, but also rather verbose to use.

In contrast, AutoArgs does not (yet?) support any attributes, and determines all behavior directly from your type. This means that you don't repeat yourself, but also means that you have less fine-grained control over your interface, and some interfaces may be well-nigh impossible.

You can implement the AutoArgs trait manually, which does make it possible (and not even that painful) to create a different command-line for a given type, but this is not the intended way to use AutoArgs.

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.5MB
~56K SLoC