Commit graph

499 commits

Author SHA1 Message Date
Kevin K
a35f76346f fix(Errors): fixes a compiling bug when built on Windows or without the color feature
Close #345
2015-11-14 04:51:44 -05:00
Kevin K
f03b88a976 fix(Required Args): fixes a bug where required args are not correctly accounted for
Closes #343
2015-11-13 09:34:26 -05:00
Kevin K
3359683380 refactor(Defaults): derives traits instead of manual implementation 2015-11-12 22:43:37 -05:00
Kevin K
8988853fb8 imp(ArgMatcher): huge refactor and deduplication of code
Tons of code has been moved into functions, deduplicated, made much
easier to read, maintain, and understand. Comments still need to be
added, but that will happen shortly. Modules have also been moved around
to follow Rust conventions and best practices.

All functionality remains exactly the same
2015-11-11 10:26:05 -05:00
Kevin K
5800cdec6d imp(Traits): refactoring some configuration into traits
There is now an AnyArg trait which lets you (clap dev, not consumer) get
info about certain args regardless of their type. Allows more generic
and de-duplicated code
2015-11-11 08:48:34 -05:00
Kevin K
1fdecfd519 style: moves mod names to follow rust standards 2015-11-09 07:17:23 -05:00
Kevin K
f5bfb41bf1 refactor: moves value validation out of App and into Option Args 2015-11-09 03:49:20 -05:00
Kevin K
1b69ca4bee refactor: moves code for ergonomics 2015-11-09 03:48:49 -05:00
Kevin K
bf4d8417b8 style: rustfmt run 2015-11-09 02:22:12 -05:00
Kevin K
c6858f7875 fix: fixes a bug with required positional args in usage strings 2015-11-09 02:01:21 -05:00
Kevin K
447786ed8a refactor(Usage): fixes some error handling duplication 2015-11-08 09:55:02 -05:00
Kevin K
bc4495b32e perf(App): more BTreeMap->Vec, Opts and SubCmds 2015-11-08 03:48:13 -05:00
Kevin K
d357640fab perf(App): changes flags BTreeMap->Vec 2015-11-08 01:50:12 -05:00
Kevin K
78971fd68d perf(App): removed unneeded BTreeMap 2015-11-08 01:08:06 -05:00
Kevin K
64b921d087 perf(App): changes BTreeMap to VecMap in some instances 2015-11-08 01:01:11 -05:00
Kevin K
111745c937 chore: updates clippy 2015-11-07 00:08:15 -05:00
Kevin K
cdc29175bc imp: massive errors overhaul 2015-11-03 08:26:17 -05:00
Kevin K
e59bc0c160 imp(Errors): errors have been vastly improved 2015-11-03 02:09:49 -05:00
Kevin K
ec0089d42e perf(App): removed excess clones 2015-11-03 02:07:57 -05:00
Kevin K
19538b9c22 chore: fixes features declarations 2015-11-03 01:59:08 -05:00
Kevin K
b261783c71 refactor(UsageParser): moves code for readability 2015-11-03 01:59:08 -05:00
Kevin K
89b51fdf8b fix(Error Status): fixes bug where --help and --version return non-zero exit code 2015-11-02 22:56:05 -05:00
Ben S
00b61ae226 Fix a bunch of typos in comments 2015-11-01 14:02:37 +00:00
Jimmy Cuadra
434f497ab6 docs: Clarify behavior of Arg::multiple with options. 2015-10-29 22:40:47 -07:00
Jimmy Cuadra
c1f66b5de7 docs: Fix typos and improve grammar. 2015-10-29 22:40:10 -07:00
Kevin K
1a8bf31e7a docs: adds comparison in readme
Closes #325
2015-10-29 01:07:43 -04:00
Kevin K
27df8b9d98 fix(Versionless SubCommands): fixes a bug where the -V flag was needlessly built
Closes #329
2015-10-29 00:23:09 -04:00
Kevin K
e639adad22 style: removes commented out code 2015-10-28 11:00:31 -04:00
Kevin K
d0c13d2960 style: rustfmt run 2015-10-28 10:56:10 -04:00
Kevin K
f161ffa470 chore: updates and implements lint findings 2015-10-28 10:55:26 -04:00
Kevin K
aff89d579b feat: allows parsing without a binary name for daemons and interactive CLIs
Closes #318
2015-10-28 06:45:49 -04:00
Kevin K
c47025dca2 fix(Safe Matches): using 'safe' forms of the get_matches family no longer exit the process
Closes #256
2015-10-28 05:55:04 -04:00
Kevin K
c9a9548a8f fix(Option Args): fixes bug with args and multiple values
Closes #323
2015-10-28 04:54:28 -04:00
Kevin K
e3be87cfc0 fix(Help and Version): only builds help and version once 2015-10-28 00:25:40 -04:00
Kevin K
34ce59ede5 fix(Errors): tones down quoting in some error messages
Closes #309
2015-10-13 13:46:35 -04:00
Kevin K
c78ce128eb fix: fixes crash on invalid arg error 2015-10-06 15:08:59 -04:00
Kevin K
6b90f1adad refactor(Errors): refactors how errors are created for deduplication
Closes #277
2015-10-05 21:47:39 -07:00
Kevin K
2a223dad82 fix(Unified Help): sorts both flags and options as a unified category 2015-10-05 20:36:30 -04:00
Georg Brandl
e73b07e194 fix: grammar error in some conflicting option errors 2015-10-04 10:43:59 +02:00
Kevin K
72b453dc17 fix(Usage): fixes a bug where required args aren't filtered properly
Closes #277
2015-10-03 09:22:15 -04:00
Kevin K
0e3733e4fe feat: supports -aValue style options 2015-10-02 16:46:37 -04:00
SungRim Huh
b7df92d7ea docs: clean up some formatting 2015-10-01 21:46:45 -04:00
SungRim Huh
d7233bf122 docs: move the crate-level docs to top of the lib.rs file 2015-10-01 16:48:25 -07:00
Kevin K
3183279acd Merge branch 'master' into rustdoc 2015-10-01 17:30:47 -04:00
Kevin K
34b601be5f docs: changes doc comments to rustdoc comments 2015-10-01 17:27:29 -04:00
Kevin K
0005154bcb Merge branch 'master' into issue-278 2015-10-01 14:28:09 -04:00
Kevin K
27018b1821 feat(Trailing VarArg): adds opt-in setting for final arg being vararg
Closes #278
2015-10-01 14:18:17 -04:00
Kevin K
05414a4b6d style: removes trailing whitespace 2015-10-01 14:16:02 -04:00
Kevin K
0f411c1c3e Merge branch 'master' into issue-298
skip-ci
2015-10-01 12:49:27 -04:00
Kevin K
aaf0d6fe7a fix(Usage Strings): fixes a bug ordering of elements in usage strings
Closes #298
2015-10-01 12:33:37 -04:00
Kevin K
6f9ee181e6 docs(Rustdoc): adds portions of the readme to main rustdoc page
Closes #293
2015-10-01 12:03:14 -04:00
Kevin K
958ebb8629 refactor: removes legacy panics and fixes grammar 2015-10-01 00:05:41 -04:00
Kevin K
a9aae2ade4 refactor: fixes a typo in the arg settings 2015-09-30 23:59:40 -04:00
Kevin K
f1031dac13 refactor: fixes a typo in the app settings 2015-09-30 23:59:40 -04:00
Kevin K
b01667ebb3 refactor: changes some arg fields to flags internally 2015-09-30 23:59:40 -04:00
Kevin K
7005cf8c47 style: removes trailing whitespace 2015-09-30 23:59:40 -04:00
Kevin K
b733bfbb6a refactor: adds the hidden setting to AppSettings 2015-09-30 23:59:40 -04:00
Kevin K
ffae52e64b refactor: refactor app settings into flags 2015-09-30 23:59:40 -04:00
Kevin K
6f2926e794 refactor(ArgBuilders): moves creation of builders to constructors 2015-09-30 23:59:40 -04:00
Kevin K
1412e639e0 fix(Help Message): required args no longer double list in usage
Closes #277
2015-09-30 12:54:00 -04:00
Kevin K
f121ae749f fix(Possible Values): possible value validation is restored
Closes #287
2015-09-30 10:23:26 -04:00
Kevin K
af8bfb1610 tests(ArgGroups): adds tests for ArgGroups
closes #279
2015-09-28 12:29:57 -04:00
Kevin K
c92a4b9eff feat: allows accessing arg values by group name 2015-09-28 12:22:09 -04:00
Kevin K
e17fcec53b fix(Conflicts): fixes bug with conflicts not removing required args
Closes #271
2015-09-22 15:38:04 -04:00
Kevin K
87ba54451d docs: properly names Examples section for rustdoc 2015-09-21 22:06:15 -04:00
Kevin K
c5bf7ddc8c feat(Unicode): allows non-panicing on invalid unicode characters 2015-09-21 21:58:25 -04:00
Alexander Kuvaev
a87c5cd660 fix(ArgGroup) added asserts to help users to configure clap properly
Also I've added tests for this change
2015-09-21 22:33:55 +03:00
Kevin K
931aea8842 docs(Arg): unhides fields of the Arg struct 2015-09-20 20:34:20 -04:00
Alex Gulyás
cbc42a37d2 fix: flush the buffer in App::print_version() 2015-09-18 23:58:05 +02:00
Dabo Ross
ffe1458882 Replace crate_version!() macro with simpler call
As of https://github.com/rust-lang/cargo/pull/1094, cargo publishes the full crate version as `CARGO_PKG_VERSION`, rather than *just* the parts of it.

This replaces the more complicated call with simply `env!("CARGO_PKG_VERSION").to_owned()`.
2015-09-12 20:22:01 -07:00
James McGlashan
13712da1d3 fix: Macro benchmarks 2015-09-10 22:23:58 +10:00
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