Commit graph

528 commits

Author SHA1 Message Date
Kevin K
07f6d63e17 chore: increase version 2015-09-09 00:00:17 -04:00
Kevin K.
c0c1613188 Merge branch 'master' into issue-231 2015-09-08 22:49:07 -04:00
Kevin K
1e6403b6a8 feat(Errors): allows consumers to write to stderr and exit on error 2015-09-08 22:38:44 -04:00
Kevin K
56b95f3208 feat: allows printing help message by library consumers 2015-09-08 22:38:07 -04:00
Kevin K
f9c04aeb2c tests(App): adds print_help test 2015-09-08 21:03:20 -04:00
Kevin K
c92a98fb67 tests(Hidden Args): fixes tests to include hidden field 2015-09-08 21:02:54 -04:00
Kevin K
2cab4d0334 feat: allows defining hidden args and subcmds
Closes #231
2015-09-08 20:45:14 -04:00
James McGlashan
443841b012 feat: Builder macro to assist with App/Arg/Group/SubCommand building 2015-09-08 22:53:31 +10:00
Kevin K
94003db4b5 feat: adds abiltiy not consume self when parsing matches and/or exit on help 2015-09-07 21:18:00 -04:00
Kevin K
40229efd99 style: post rustfmt run 2015-09-06 21:37:45 -04:00
Alexander Kuvaev
b9ca261634 docs(ClapErrorType): changed examples content 2015-09-06 01:44:20 +03:00
Alexander Kuvaev
dd05784327 docs: fixed ClapErrorType docs 2015-09-06 01:12:46 +03:00
Alexander Kuvaev
934e6fbb64 feat(App): Added ability for users to handle errors themselves
Now you can use get_matches_safe instead of get_mathces if you want
to handle errors yourself.

This will allow now to write false-negative tests and check what type
of error occurs
2015-09-06 00:17:32 +03:00
Alexander Kuvaev
afaf198504 refactor(App): Now most parser function will return Result with Err...
... instead of hard exiting
2015-09-05 00:32:11 +03:00
Alexander Kuvaev
f5406076de Merge remote-tracking branch 'upstream/master' into report_error_refact 2015-09-04 22:58:25 +03:00
Kevin K
3cb4a48ebd perf: changes ArgGroup HashSets to Vec 2015-09-04 14:05:42 -04:00
Kevin K
e1694922f5 tests: adds test for ArgGroups 2015-09-04 13:58:00 -04:00
Kevin K
32044f26e0 tests: adds tests for PosBuilder Display 2015-09-04 13:29:57 -04:00
Kevin K
3a5bb17596 tests: adds tests for FlagBuilder Display 2015-09-04 13:29:45 -04:00
Kevin K
e27a3f3146 tests: adds tests for AppSettings FromStr 2015-09-04 13:16:24 -04:00
Kevin K
baab2e3f40 perf: changes BTreeSet for Vec in some instances 2015-09-04 13:04:24 -04:00
Kevin K
cfaae03b2a tests: adds tests for did_you_mean suggestions 2015-09-04 13:04:18 -04:00
Kevin K
63dbc5569f tests: adds tests for colored output 2015-09-04 11:59:33 -04:00
Alexander Kuvaev
f1c5bf5511 refactor(App): report_error refactoring 2015-09-04 00:51:37 +03:00
Kevin K
82a09abb32 Merge branch 'issue-205' of https://github.com/Vinatorul/clap-rs into vin-issue-205 2015-09-01 00:05:54 -04:00
Kevin K
b17808ffbd Merge branch 'master' into issue-80 2015-09-01 00:03:16 -04:00
Kevin K
ab41d7f382 docs(YAML): adds examples for using YAML to build a CLI 2015-08-31 23:57:35 -04:00
Kevin K
19b348a100 docs(Args from YAML): fixes doc examples 2015-08-31 23:57:35 -04:00
Kevin K
ecf88665cb feat(ArgGroups): adds support for building ArgGroups from yaml 2015-08-31 23:57:25 -04:00
Kevin K
e415cf78ba feat(Subcommands): adds support for subcommands from yaml 2015-08-31 23:57:16 -04:00
Kevin K
86cf4c4562 feat(YAML): allows building a CLI from YAML files 2015-08-31 23:57:16 -04:00
Kevin K
169ffec100 fix(Unified Help Messages): fixes a crash from this setting and no opts
Closes #210
2015-08-30 23:36:04 -04:00
Kevin K
f482387544 refactor: breaks up app code into different files 2015-08-30 17:10:26 -04:00
Kevin K
4f836ee5ef refactor(Examples): corrects compiler warnings about names
Closes #204
2015-08-30 15:43:57 -04:00
Alexander Kuvaev
5a8e341e8e refactor(ArgGroup): changed Vec<&str> using to &[&str] 2015-08-30 20:22:26 +03:00
Alexander Kuvaev
0cfecd328c tests: moved tests from lib.rs to tests.rs and tests dir 2015-08-28 21:48:37 +03:00
Kevin K
ad962ec478 feat(Args): allows opts and args to define a name for help and usage msgs 2015-08-27 12:05:23 -04:00
Kevin K
3d5e9a6ced fix(Possible Values): fixes a bug where suggestions arent made when using --long=value format
Closes #192
2015-08-26 19:49:39 -04:00
Kevin K
ff9628d24d chore: comments out clippy until 0.0.12 is on crates.io 2015-08-26 17:32:25 -04:00
Kevin K
5aa02042ca chore: separates nightly features from travis-cargo flags 2015-08-25 17:28:46 -04:00
Alexander Kuvaev
b41afa8c3d fix(App, Args): fixed subcommand reqs negation
Closes #188
2015-08-24 14:30:33 -04:00
Alexander Kuvaev
9c135eb790 fix(App): fixed requirmets overriding 2015-08-23 01:47:19 +03:00
Alexander Kuvaev
fc7a31a745 fix: fixed confusing error message, also added test for it 2015-08-22 12:45:25 +03:00
Alexander Kuvaev
999456969d tests: test for multiple flags in single 2015-08-22 00:04:36 +03:00
Alexander Kuvaev
56ea693084 tests: tests for flag using 2015-08-21 23:55:13 +03:00
Alexander Kuvaev
38fb26b9d7 tests: addet options values testing to some tests 2015-08-21 23:46:51 +03:00
Alexander Kuvaev
215fc821a7 tests: tests for options using 2015-08-21 23:42:47 +03:00
Alexander Kuvaev
133a26c2fb tests: rewrote test for multiple occurrences 2015-08-20 21:52:48 +03:00
Kevin K
754d6b7dd1 tests: adds tests for posix compatible conflicts 2015-08-19 21:44:25 -04:00
Kevin K
8c2d48acf5 feat: implements posix compatible conflicts for long args 2015-08-19 21:40:06 -04:00
Kevin K.
70e48d1357 Merge pull request #177 from Vinatorul/issue176
Added overrides to support conflicts in POSIX compatible manner
2015-08-19 21:23:24 -04:00
Alexander Kuvaev
eed54ff836 tests: moved code from claptests to lib.rs, also moved one test 2015-08-20 00:46:06 +03:00
Alexander Kuvaev
ddc3976a58 Merge branch 'issue176' of https://github.com/Vinatorul/clap-rs into issue176 2015-08-19 20:42:52 +03:00
Alexander Kuvaev
cd6649959f feat(Args) method to add multiple overrides at once 2015-08-19 20:37:17 +03:00
Kevin K
d715646e69 feat(Args): allows defining POSIX compatible argument conflicts 2015-08-18 23:59:04 -04:00
Kevin K
d0c3b37970 perf(Args and Apps): changes HashSet->Vec in some instances for increased performance 2015-08-18 22:04:22 -04:00
Alexander Kuvaev
5a18fa4ffe wip: removed 'o lifetime 2015-08-18 23:53:03 +03:00
Alexander Kuvaev
92b9f8f5bf wip: fixed docs and remove faulty #[cfg(test)] block 2015-08-18 23:27:24 +03:00
Alexander Kuvaev
0b916a00de feat: added overrides to support conflicts in POSIX compatible manner 2015-08-18 22:33:52 +03:00
Kevin K
19c46e1403 chore: fix until clippy on crates.io is updated 2015-08-14 20:58:18 -04:00
Kevin K
0349654717 docs: updates docs for new features 2015-08-14 20:25:21 -04:00
Kevin K
4a00e2510d imp(AppSettings): adds ability to add multiple settings at once 2015-08-14 20:17:14 -04:00
Kevin K.
3b020f9e42 Merge pull request #174 from kbknapp/issue-170
feat(Args): allows for custom argument value validations to be defined
2015-08-14 19:39:42 -04:00
Alexander Kuvaev
7df170d7f4 fix: fixed misspell and enum name 2015-08-15 02:11:20 +03:00
Kevin K
84ae2ddbce feat(Args): allows for custom argument value validations to be defined
Closes #170
2015-08-14 18:46:13 -04:00
Alexander Kuvaev
ade367780c docs: fixed docs for previous changes 2015-08-15 01:16:35 +03:00
Alexander Kuvaev
dc3ada7386 fix: fixed use for clap crate 2015-08-15 01:15:47 +03:00
Alexander Kuvaev
618dc4e2c2 feat: Replace application level settings with enum variants 2015-08-15 00:14:59 +03:00
Kevin K
8a2cd7f95f imp: code corrections thanks to rust-clippy 2015-08-14 00:21:16 -04:00
Kevin K
d63c013631 fix: fixes two bugs in App when printing newlines in help and subcommands required error 2015-08-01 00:44:20 -04:00
Kevin K
93e915dfe3 perf: removes some unneeded allocations 2015-07-29 17:55:02 -04:00
Kevin K
c9195c5f92 fix(Macros): fixes a typo in a macro generated error message 2015-07-19 22:03:59 -04:00
Kevin K
fe5d95c64f fix(Type Errors): fixes formatting of error output when failed type parsing 2015-07-19 21:52:34 -04:00
Kevin K
86c3be85fb imp(Usage Strings): displays a [--] when it may be helpful 2015-07-19 21:52:34 -04:00
Kevin K
9cb5dceb3e fix: fixes formatting bug which prevented compiling on windows
Closes #163
2015-07-18 14:31:09 -04:00
Kevin K
6d214b549a fix: fixes a bug when parsing multiple {n} newlines inside help strings 2015-07-16 22:16:50 -04:00
Kevin K
42b6d1fc3c fix: fixes a logic bug and allows setting Arg::number_of_values() < 2
Allows setting `Arg::number_of_values(qty)` where `qty` < 2. This allows
things such as `Arg::number_of_values(1)` in conjuction with
`Arg::multiple(true)` which would make invoking the program like this
`myprog --opt val --opt val` legal, but `myprog --opt val1 val2`
illegal.

Closes #161
2015-07-16 21:34:04 -04:00
Kevin K
f9800a2969 imp(Help Strings): properly aligns and handles newlines in long help strings
Long help strings can now be broken up with newlines that will be
properly aligned in help messages. Simply place a `{n}` wherever you'd
like the newline to appear.

Closes #145
2015-07-16 01:27:58 -04:00
Kevin K
52bcd892ea feat: allows creating unified help messages, a la docopt or getopts
Allows creating help messages with a more unified look, similar to how
docopt and getopts are formatted. (i.e. flags and options are combined
into a single group)

Closes #158
2015-07-16 01:27:05 -04:00
Kevin K
336c476f63 feat: allows stating all subcommands should *not* have --version flags
Allows subcommands to disable the `--version` flag by using the
`App::versionless_subcommands(true)` method.

Closes #156
2015-07-16 01:26:11 -04:00
Kevin K
bc66d3c6de feat: allows setting version number to auto-propagate through subcommands
The version number can now be auto-propgated down through subcommands
with the App::global_version(true) method

Closes #157
2015-07-16 01:25:14 -04:00
Severen Redwood
8889689dc6 docs: fix incorrect code example for App::subcommand_required 2015-07-15 21:54:07 -04:00
Kevin K
cc76ab8c2b imp(Errors): writes errors to stderr
Closes #154
2015-07-11 11:23:48 -04:00
Kevin K
dc7e1fcea5 imp(Usage): re-orders optional arguments and required to natural standard
Also renamed is '[POSITIONAL]' => '[ARGS]' to use the more standard
vernacular

Closes #147
2015-07-09 09:51:57 -04:00
Kevin K
083f82d333 fix: allows empty values when using --long='' syntax
Closes #151
2015-07-08 14:57:28 -04:00
Kevin K
1528038fbb chore: silence macro definition warnings 2015-07-07 20:06:15 -04:00
Kevin K
753125282b feat: args can now be parsed from arbitrary locations, not just std::env::args() 2015-07-07 19:55:41 -04:00
Severen Redwood
3e8891c00b Fix typos in the documentation for the clap::App struct 2015-06-30 19:47:57 +12:00
Severen Redwood
2614a0fa8c Fix typos in the documentation for the .help() method 2015-06-30 19:21:30 +12:00
Kevin K
a5b8b3584b test: fixes tests for 1.0 and deprecated functions 2015-06-29 22:21:47 -04:00
Kevin K
274484dfd0 imp: removes deprecated functions in prep for 1.0 2015-06-29 22:03:05 -04:00
Kevin K
d0da3bdd9d feat: allows waiting for user input on error
In order to pause for user input on error use `.wait_on_error(true)` but
it's important to note that this is *not* recursive through subcommands.

This is useful on Windows when a user mistakenly opens an application by
double clicking it, instead of using the command line or if using a GUI
shortcut to run a program.

Closes #140
2015-06-29 21:59:26 -04:00
Kevin K
26d5ae3e33 feat(Help): allows one to fully override the auto-generated help message
Allows overriding the entire help message so that nothing is
auto-generated

Closes #141
2015-06-29 21:58:45 -04:00
Kevin K
ebf442ebeb docs: updates docs to new version flag defaults 2015-06-16 20:46:11 -04:00
Kevin K
eb1d9320c5 feat(Help and Version): allows overriding h/v short and changes default ver short to -V
The new default short for version is `-V` (capital). This is a "breaking"
change at least for documentation.

If the old lowercase `-v` is desired you can manually override with
`App::version_short("v")`

The help short can also be overridden now too.

BREAKING CHANGE
2015-06-16 16:54:20 -04:00
Kevin K
1f377960a4 fix(Global Args): global arguments propogate fully now
Closes #137
2015-06-06 17:08:39 -04:00
Kevin K
a37842eec1 fix(Global Args): fixes a bug where globals only transfer to one subcommand
Closes #135
2015-05-31 00:45:07 -04:00
Kevin K
2191fe94bd imp(Binary Names): allows users to override the system determined bin name
Allows users to use `.bin_name("name")` to override the system
determined name with one of their choosing.

Closes #134
2015-05-30 13:09:21 -04:00
Kevin K
29ca7b2f74 feat: can now specify that an app or subcommand should display help on no args or subcommands
Closes #133
2015-05-25 21:49:27 -04:00
Kevin K
743eefe8dd docs: updates for deprecations and new features 2015-05-22 23:32:56 -04:00
Kevin K
d6c3ed54d2 imp(Colors): implements more structured colored output
Closes #129
2015-05-22 23:01:20 -04:00
Kevin K
2bcc6137a8 feat(Global Args): allows args that propagate down to child commands
Closes #131
2015-05-22 13:18:02 -04:00
Kevin K
28b7385552 depr(SubCommand/App): several methods and functions for stable release
SubCommand::new() -> SubCommand::with_name()
App::error_on_no_subcommand() -> App::subcommand_required()
2015-05-22 13:16:07 -04:00
Kevin K
52218cc1fd fix(help): allows parent requirements to be ignored with help and version
Parent requirements are now ignored when the user requests help or
version switches

Closes #124
2015-05-20 11:17:30 -04:00
Kevin K
08ba3f25cf fix(help): fixes a bug where requirements are included as program name in help and version 2015-05-17 20:22:40 -04:00
Kevin K
7554f238fd feat(subcommands): allows optionally specifying that no subcommand is an error
Closes #126
2015-05-17 18:21:55 -04:00
Kevin K
dd8f21c7c1 imp(usage): usage strings now include parent command requirements
Closes #125
2015-05-17 18:20:32 -04:00
Kevin K
4a4229f500 feat(subcommands): subcommands can optionally negate parent requirements
Closes #123
2015-05-17 14:29:57 -04:00
Kevin K
ab4ec609cc imp(args): allows consumer of clap to decide if empty values are allowed or not
Closes #122
2015-05-17 14:21:38 -04:00
Kevin K
bc12e78ead fix(args): - can now be parsed as a value for an argument
Closes #121
2015-05-17 09:45:16 -04:00
Kevin K
30fa87ba4e feat(macros): arg_enum! and simple_enum! provide a Vec<&str> of variant names
You can now use  ArgName::variants() to get a Vec<&'static str> of
vairant names (Nice for Arg::possible_values()). It's not as good as
implementing Iterator for the enum, but that can't be done without being
able to concat AST tokens in order to make an "EnumIter" type which
implements iterator and keeps track of when to yield None. But the
overall intent of this issue was to be able to iterate variant names,
which is now possible.

Closes #119
2015-05-15 16:42:00 -04:00
Kevin K
d1219f0d13 feat(macros): arg_enum! and simple_enum! auto-implement Display
enums created with simple_enum! and arg_enum! now auto-implement
std::fmt::Display where the variant only is displayed.

Closes #120
2015-05-15 15:40:06 -04:00
Kevin K
0c264a8ca5 fix(macros): makes macro errors consistent with others
Mainly this is newline fixes

Closes #118
2015-05-15 15:40:06 -04:00
Kevin K
d2b3b1faa0 fix(suggestions): --help and --version now get suggestions
Closes #116
2015-05-12 18:12:14 -04:00
Kevin K
55d155827e fix(usage): groups unfold their members in usage strings
Closes #114
2015-05-10 14:43:34 -04:00
Kevin K
fd53cd1885 perf(usage): removes unneeded allocations 2015-05-10 14:27:00 -04:00
Kevin K
da78da3620 chore(Rust): removes use of + with Vec<T> 2015-05-09 11:49:57 -04:00
Kevin K
eb0e374ecf fix(usage strings): positional arguments are presented in index order
Positional arguments are now presented in index order in suggested usage
strings which prevents out of order suggestions.

Closes #112
2015-05-08 11:37:45 -04:00
Kevin K
fc79017ece fix(subcommands): stops parsing multiple values when subcommands are found
Closes #109
2015-05-06 12:36:03 -04:00
Kevin K
994474146e im(suggestions): adds suggested arguments to usage strings 2015-05-06 12:36:03 -04:00
Kevin K
55f71117c6 refactor(errors): fix error messages 2015-05-06 12:36:03 -04:00
Kevin K
aab44cca63 im(color): reduces color in error messages
Closes #110
2015-05-06 12:35:52 -04:00
Kevin K
8745071c32 feat(Flags): adds sugestions functionality 2015-05-05 22:05:02 -04:00
Kevin K
960389de02 docs(README): adds details about optional and new features 2015-05-05 22:05:02 -04:00
Kevin K
90e7b08187 fix(Positional): positionals were ignored if they matched a subcmd, even after '--' 2015-05-05 22:05:02 -04:00
Kevin K
a3e0671336 tests(arg_enum): adds tests 2015-05-05 22:05:02 -04:00
Kevin K
73d5a974eb tests(colors): removes ansi color codes before testing 2015-05-05 22:05:02 -04:00
Kevin K
632fb11514 fix(help): fixes bug where space between arg and help is too long 2015-05-05 22:05:02 -04:00
Kevin K
f8b26b13da feat(errors): colorizes output red on error 2015-05-05 22:05:02 -04:00
Tshepang Lekhonkhobe
8891d92917 docs(clap): fix typos caught by codespell
Thanks to [tshepang](https://github.com/tshepang) for catching these!
2015-05-05 22:02:14 -04:00
Sebastian Thiel
0535cfb0c7 fix(did-you-mean): for review
* unknown subcommand message altered to use similar language as is used
  everywhere around clap. Namely, we say 'invalid' instead of 'unknown'
* 'did-you-mean' message separator changed from '. ' to '\n\t'

Related to #103
2015-05-05 17:12:20 -04:00
Sebastian Thiel
c0e383515d feat(did-you-mean): gate it behind 'suggestions'
You can now disable the did-you-mean feature entirely, which also
removes the additional dependency it comes with.
Learn more about features and how to use them here:
http://doc.crates.io/manifest.html#the-[features]-section

Related to #103
2015-05-05 17:12:20 -04:00
Sebastian Thiel
1cc2deb291 feat(did-you-mean): for possible values
There now is a single method which deals with formatting the
'did-you-mean' message, supporting different styles to cater all the
various needs that have arisen thus far, with enough potential to be
easily extended in future through a little helper-enumeration whose
variants can possibly take values.

*NOTE*: We might still want to have a look at where the did-you-mean
message should be located for best effect.

Related to #103
2015-05-05 17:12:20 -04:00
Sebastian Thiel
627ec103c9 refactor(app):dedup possible_values error-handling
This is done in preparation for adding suggestions.

**NOTE**: We will now always use the ...
`"\"{}\" isn't a valid value for '{}'{}"`
... format, even though in one occasion, only a ...
`"\"{}\" isn't a valid value for {}{}"`
... format was used.

Hope that's alright and not breaking the world. At least, it doesn't
break any of the existing tests.
2015-05-05 17:12:20 -04:00
Sebastian Thiel
5407ac6cd6 refactor(app): better use of type-inference
Removing explicit typing makes the code more readable, which makes it
more maintainable, which probably helps everyone :).
2015-05-05 17:12:20 -04:00
Sebastian Thiel
0dd095f975 refactor(did-you-mean): dedup. thanks to suffix
That way, we use the prefix previously used by clap, but add our
particular 'did-you-mean' phrase as a suffix.
2015-05-05 17:12:20 -04:00
Sebastian Thiel
52a0b8505c feat(did-you-mean): for long flags (i.e. --long)
Long arguments now have a special case when saying they are unknown, as
we will match it against all known long flags and suggest the best match
to be used instead.

TODO: refactor to just write a suffix with did-you-mean information.

Related to #103
2015-05-05 17:12:20 -04:00
Sebastian Thiel
06e869b518 feat(did-you-mean): for subcommands
If an argument is not understood as subcommand, but has a
high-confidence match in the list of all known subcommands, we will use
this one to print a customized error message.

Previously, it would say that a positional argument wasn't understood,
now it will say that a subcommand was unknown, and if the user meant
`high-confidence-candidate`.

If the argument doesn't sufficiently match any subcommand, the default
handling will take over and try to treat it as positional argument.

* added dependency to `strsym` crate
* new `did_you_mean` function uses `strsim::jaro_winkler(...)` to look
  for good candidates.

Related to #103
2015-05-05 17:12:20 -04:00
Sebastian Thiel
d17dcb2920 imp(clap-test): simplified make test invocation
* assure `make test` works on OSX as well
* simplified entire makefile, by basically removing sed invocations to
  manipulate the Cargo.toml file under source control.
* *works for me* predicate

This should probably be tested on another system as well, just to be
sure it makes sense for everyone.
2015-05-05 17:12:20 -04:00
Kevin K
b249f9657c im(arg_enum): allows ascii case insensitivity for enum variants
Allows creating an enum with CamelCase to follow Rust guidelines, but
then will match ascii case insensitive. This means variant
SomeEnum::Emacs would match string "emacs".

Closes #104
2015-05-05 17:12:20 -04:00
Kevin K
05476fc61c docs(from_usage): explains new usage strings with multiple values 2015-05-05 17:12:20 -04:00
Kevin K
3d58197674 feat(from_usage): adds ability to add value names or num of vals in usage string
Allows new usage strings with value names or number of values. If the
names are consecutive, they are counted to represent the number of
values (if they all have the same name), or if their names are different
they are used as value names.

Closes #98
2015-05-05 17:12:20 -04:00
Kevin K
847001ff6d fix(help): fixes tab alignment with multiple values 2015-05-04 22:01:28 -04:00
Kevin K
c1c993c419 im(Options): adds number of values to options in help/usage 2015-05-04 22:01:28 -04:00
Kevin K
dd2a75640c fix(MultipleValues): properly distinguishes between multiple values and multiple occurrences
When using number_of_values() or value_names() you no longer have to set
.multiple(true) unless you want the argument to be allowed multiple
times (i.e. *not* the value, but the argument itself). This means
without multiple(true) set (and assuming 2 values) -o val1 val2 is only
allowed one time, but with multiple(true) set, -o val1 val2 -o val3 val4
is allowed.

Closes #99
2015-05-04 21:59:10 -04:00
Kevin K
a1fb94be53 fix(Options): fixes bug where options with no value don't error out 2015-05-03 20:31:56 -04:00
Kevin K
f66334d0ce fix(Options): fixes a bug where option arguments in succession get their values skipped 2015-05-03 17:02:10 -04:00
Kevin K
51087b693b style(app.rs): changes to follow Rust style guide 2015-05-03 16:24:44 -04:00
Kevin K
c236dc5ff4 im(ArgGroups): improves requirment and confliction support for groups 2015-05-03 16:15:54 -04:00
Kevin K
a29c3983c4 im(ErrorMessages): improves error messages and corrections 2015-05-03 15:49:18 -04:00
Kevin K
93c4a7231b fix(RequiredValues): fixes a bug where missing values are parsed as missing arguments 2015-05-03 15:39:49 -04:00
Kevin K
4de05f65fb perf(usage): improves usage string generation 2015-05-03 00:38:18 -04:00
Kevin K
12aea9612d fix(RequiredArgs): fixes bug where required-by-default arguments are not listed in usage
Closes #96
2015-05-03 00:38:06 -04:00
Kevin K
82b0c5c3d7 docs(macros.rs): fixes doc tests 2015-05-01 14:50:28 -04:00
Kevin K
22aef2ab45 style(clap): rustfmt run 2015-05-01 14:44:20 -04:00
Kevin K
08635e6b5e style(clap): makes changes to follow Rust style guide 2015-05-01 14:43:26 -04:00
Kevin K
1f1fc04e1e docs(arg.rs): improves docs and fix typos 2015-05-01 10:19:19 -04:00
Kevin K
86d92c9fdb fix(MultipleValues): stops evaluating values if the max or exact number of values was reached 2015-04-30 22:17:10 -04:00
Kevin K
82d03638d3 docs(lib.rs): fix doc tests 2015-04-30 20:43:22 -04:00
Kevin K
0d123a0d86 docs(clap): update docs 2015-04-30 20:13:01 -04:00
Kevin K
53f6b8c9d8 feat(MultipleValues): add support for minimum and maximum number of values 2015-04-30 19:32:51 -04:00
Kevin K
ae09f05e92 feat(MultipleValues): adds support limited number and named values 2015-04-30 18:02:19 -04:00
Kevin K
6669f0a968 feat(MultipleValues): implement shorthand for options with multiple values 2015-04-30 15:11:12 -04:00
Kevin K
d77048efb1 feat(usage): implement smart usage strings on errors
Closes #88
2015-04-30 12:12:44 -04:00
Kevin K
0cc2f69839 feat(arg): allow other types besides Vec for multiple value settings
Breaking Change

Instead of requiring a Vec<&str> for various Arg::*_all() and
Arg::possible_values() methods this
commit now requires a generic IntoIterator<Item=AsRef<str>> which allows
things such as constant arrays. This change requires that any
Arg::*_all() methods be changed from vec!["val", "val"] -> let vals =
["val", "val"]; some_arg.possible_values(&vals) (or vals.iter()).

Closes #87
2015-04-29 17:52:13 -04:00
Kevin K
1c92ed0e72 chore(docs): change makefile -> travis auto cargo doc and upload 2015-04-28 23:18:08 -04:00
Kevin K
ad4e545107 fix(from_usage): removes bug where usage strings have no help text
Creating arguments from usage strings with no help text previously
dropped the final character i.e. --flags -> --flag
This commit fixes that issue by testing if we are at the end of the
string

Closes #83
2015-04-28 22:11:20 -04:00
Kevin K
60c1b307ac docs(groups): adds documentation for ArgGroups 2015-04-27 22:52:50 -04:00
Kevin K
4bb4c3cc07 fix(RequiredArgs): required by default args should no longer be required when their exclusions are present 2015-04-27 00:53:12 -04:00
Kevin K
09eb4d9893 feat(ArgGroups): add ability to create arg groups 2015-04-27 00:53:12 -04:00
Kevin K
cfffb45aa4 style(clap): clean commented out code 2015-04-25 23:55:42 -04:00
Kevin K
17e3f141aa refactor(args.rs): deprecate mutually_excludes* for conflicts_with* methods 2015-04-25 22:59:02 -04:00
Kevin K
1e25abfc36 fix(help): change long help --long=long -> --long <long> 2015-04-25 22:19:09 -04:00
Kevin K
fd61615d1a perf(matchedargs): remove unused vars and String->&str
This commit increases the performance a bit by using string slices
instead of owned strings. The trade off is that code previously written
to handle all the argument parsing in a speratate function and return
only the ArgMatches must be re-written to add a lifetime specifier:

Old code 'fn handle_args<'a>() -> ArgMatches<'a>' needs another lifetime
specifier added, so now 'fn handle_args<'a, 'b>() -> ArgMatches<'a, 'b>'

BREAKING CHANGE
2015-04-25 11:12:07 -04:00
Kevin K
b76129e9b7 fix(from_usage): fix bug causing args to not be required 2015-04-22 16:08:34 -04:00
Kevin K
d7c724dc65 tests(usage): fix typo in test variable names 2015-04-22 11:23:15 -04:00
Kevin K
dc59b12eb0 refactor(app.rs): rename more_help()->after_help() 2015-04-20 19:55:09 -04:00
Kevin K
65cc259e45 feat(apps): add ability to display additional help info after auto-gen'ed help msg 2015-04-19 20:19:21 -04:00
Kevin K
bb9d0c377e tests(from_usage): add tests for usage strings with tabs 2015-04-19 14:31:56 -04:00
Kevin K
4fd44181d5 fix(from_usage): tabs and spaces should be treated equally 2015-04-19 14:27:05 -04:00
Kevin K
c630969aa3 feat(macros.rs): add macro to get version from Cargo.toml 2015-04-19 14:22:03 -04:00
Kevin K
86e4075eb1 fix(macros.rs): fix use statements for trait impls 2015-04-18 22:23:18 -04:00
Kevin K
e7f77353b9 refactor(macros.rs): improve trait implmentation readability 2015-04-18 22:20:43 -04:00
Kevin K
31b476ca99 refactor(arg.rs): remove deprecation warnings for stable rustc 2015-04-18 13:37:01 -04:00
Kevin K
14d810d072 refactor(clap): restructure matched args for performance and deduplication 2015-04-17 17:11:10 -04:00
Kevin K
2c499f8015 feat(macros): add ability to create enums pub or priv with derives
Err type of FromStr trait changed from &'a str->String in order
to allow showing valid values on failed parse

Breaking Change
2015-04-17 11:17:19 -04:00
Kevin K
fb672aff56 feat(macros): add macro to create custom enums to use as types 2015-04-16 14:21:32 -04:00
Kevin K
1a192521b6 docs(clap): fix typo core->std 2015-04-16 12:53:05 -04:00
Kevin K
d126cfdc69 chore(clap): rebuild docs with nightly rustdoc 2015-04-14 16:18:07 -04:00
Kevin K
4057d34d93 docs(macros): add documentation covering value_t! and value_t_or_exit 2015-04-14 15:16:16 -04:00
Kevin K
0b87251fc0 feat(macros): add ability to get mutliple typed values or exit 2015-04-14 14:33:37 -04:00
Kevin K
e243fe38dd feat(macros): add ability to get a typed multiple values 2015-04-14 14:07:33 -04:00
Kevin K
4b7cd3ea49 feat(macros): add convenience macro to get a typed value or exit 2015-04-14 13:37:35 -04:00
Kevin K
8752700fbb feat(macros): add convenience macro to get a typed value 2015-04-14 12:14:17 -04:00
Kevin K
b67f2e537e docs(clap): fix failing doc tests 2015-04-13 22:26:41 -04:00
Kevin K
b389743672 docs(clap): improve examples and documentation as well as include new from_usage() features 2015-04-13 22:18:50 -04:00
Kevin K
91d2904599 fix(from_usage): trim all whitespace before parsing 2015-04-13 18:05:12 -04:00
Kevin K
3710cd6916 fix(tests): fix failing doc tests 2015-04-13 15:03:22 -04:00
Kevin K
d5d48bcf46 feat(app): add support for building args from usage strings 2015-04-13 14:32:27 -04:00
Kevin K
ab409a8f1d feat(args): add ability to create basic arguments from a usage string 2015-04-13 13:31:14 -04:00
Kevin K
3d960e8be0 docs(clap): clean up docs and add better explainations 2015-04-10 19:21:34 -04:00
Kevin K
dcbadc6275 perf(usage): remove compiler warnings and dedup some code 2015-04-10 11:50:08 -04:00
Kevin K
3636afc401 feat(usage): add ability to get usage string for subcommands too
You can now get the usage even for sub-commands by calling the
usage() method.

Breaking Change
ArgMatches::usage() now returns a slice (no longer an Option<&str>)
This is to improve ergonomics, as there should always be at least a
default usage statement, there should never be None
2015-04-10 10:49:12 -04:00
Kevin K
5137278942 fix(usage): remove unneeded space 2015-04-09 21:43:26 -04:00
Kevin K
ba817b9d81 fix(usage): remove warning about unused variables 2015-04-09 19:53:13 -04:00
Kevin K
e2488e50e4 tests(subcommand help): change to new usage generation known good 2015-04-09 18:39:29 -04:00
Kevin K
02462150ca feat(ArgMatches): add method to get default usage string 2015-04-09 18:18:51 -04:00
Kevin K
64e539280e feat(SubCommands): add method to get name and subcommand matches together 2015-04-09 17:07:28 -04:00
Kevin K
042577d254 refactor(app.rs): remove unneeded hashmap use statement 2015-04-05 20:25:03 -04:00
Kevin K
f4b2bf5767 feat(help): sort arguments by name so as to not display a random order 2015-04-05 20:20:46 -04:00
Kevin K
90e72cffde fix(flags): fix bug not allowing users to specify -v or -h 2015-04-04 16:13:51 -04:00
Kevin K
572bc31f08 style(app.rs): clean up misc items 2015-04-04 09:25:49 -04:00
Kevin K
ca17fa494b fix(help): fix spacing when option argument has not long version 2015-04-03 11:50:09 -04:00
Kevin K
9abdb438e3 fix(clap): remove unstable features for Rust 1.0 2015-04-03 11:02:46 -04:00
Kevin K
18dbcf3702 fix(args): improve error messages for arguments with mutual exclusions
Closes #51
2015-04-02 22:34:36 -04:00
Kevin K
c14c3f31fd fix(positional args): all previous positional args become required when
a latter one is required

Closes #50
2015-04-02 22:18:36 -04:00
Kevin K
e869100423 fix(help): fix formatting for option arguments with no long 2015-04-02 14:45:08 -04:00
Kevin K
a0a2a40fed fix(flags): add assertion to catch flags with specific value sets
Closes #52
2015-04-01 20:16:45 -04:00
Kevin K
82ad6ad775 fix(option args): fix bug in getting the wrong number of occurrences for options 2015-04-01 20:14:49 -04:00
Kevin K
6ceb88a594 fix(args): fix bug in arguments who are required and mutually exclusive
When arguments are required-by-default and also mutually exclusive with
other arguments and the user chooses the mutually eclusive argument, the
requirements must be updated as well.
2015-04-01 13:22:53 -04:00
Kevin K
28691b52f6 fix(help): fix formatting of help and usage 2015-04-01 13:22:53 -04:00
Kevin K
6ec1011563 fix(help): fix formatting of help for flags and options
When options or flags have varying lengths of names and "long" version
the formatting gets corrupted because of the use of tabs. This commit
fixes those issues.
2015-04-01 13:22:53 -04:00
Kevin K
297ddba770 feat(help): add '...' to indicate multiple values supported 2015-04-01 13:22:53 -04:00
Kevin K
b7fa72d40f feat(positionals): add assertions for positional args with multiple vals 2015-04-01 13:22:42 -04:00
Kevin K
8078400941 feat(positionals): add support for multiple values
Add support for #44 (multiple values for positional arguments) when the
positional argument is the last one (i.e. highest index)
2015-04-01 13:02:58 -04:00
Kevin K
da549dcb6c fix(apps): allow use of hyphens in application and subcommand names 2015-04-01 13:01:00 -04:00
Kevin K
0a09eb365c fix(args): determine if the only arguments allowed are also required 2015-04-01 12:57:26 -04:00
Kevin K
270eb88925 feat(args): add support for a specific set of allowed values on options
or positional arguments
2015-04-01 12:56:34 -04:00
Kevin K
1b7316d4a8 fix(usage): display required args in usage, even if only required by others 2015-04-01 12:50:35 -04:00
Kevin K
4ee023442a feat(subcommands): properly list subcommands in help and usage
SubCommands should be listed as parent-subcommand in help, but parent
subcommand in usage
2015-04-01 12:47:55 -04:00
Kevin K
9af52e93ce fix(option): fix bug with option occurrence values 2015-04-01 12:39:23 -04:00
Kevin K
9e8c1fb940 feat(arg): allow lifetimes other than 'static in arguments 2015-04-01 12:36:41 -04:00
Kevin K
564b1db183 removed unneeded ref in print_help() for options 2015-03-26 11:48:36 -04:00
Kevin K
de64e3d79f Removed extra tab when printing help 2015-03-26 11:25:54 -04:00
Kevin K
0cce6b8715 Adding tests 2015-03-25 17:02:21 -04:00
Kevin K
b4caf8a21b Removed unneeded Box<> 2015-03-25 13:48:01 -04:00
Kevin K
d906701b0e testing to_owned() 2015-03-24 16:21:10 -04:00
Kevin K
b047104d9a version bump and rebuilt docs 2015-03-24 14:35:47 -04:00
Kevin K
c7f22728f1 Added test application 2015-03-24 12:16:59 -04:00
Kevin K
6286d4b008 Closes #28 - Changed App name, version, about, author, and usage to allow lifetimes other than 'static 2015-03-23 22:34:01 -04:00
Kevin K
aed37da635 Bug fixes with multiple options 2015-03-22 22:48:46 -04:00
Kevin K
46bcf02a2f Bug fixes 2015-03-22 22:26:07 -04:00
Kevin K
66dab46760 Fixed doc error 2015-03-22 22:13:10 -04:00
Kevin K
eff1ef4ff1 Fixed makefile bug 2015-03-22 22:03:28 -04:00
Kevin K
0f7bc363ce Moved tests to tests/ directory and crate 2015-03-22 21:57:02 -04:00
Kevin K
d5d1554b5e Cleaned up codebase...a little 2015-03-22 21:30:48 -04:00
Kevin K
cf4dc688a5 Fixed #22 2015-03-21 10:22:46 -04:00
J/A
1e1271ed8f Remove assertion on multi args.
There's an assertion on line 322 of clap-rs/master that prevents any arg
where `multiple == true` from accepting any value. This commit only
deletes that assertion. It could cause any number of other problems; I
don't really know.
2015-03-19 00:26:50 -04:00
Kevin K.
dde61de645 Merge pull request #16 from untitaker/make
Add makefile magic
2015-03-18 21:20:10 -04:00
Kevin K
19c205b72d Closes #17 2015-03-18 21:15:02 -04:00