Commit graph

1372 commits

Author SHA1 Message Date
creativcoder
266dbbe3f4 Code review p2 2020-04-27 19:37:17 +05:30
creativcoder
92d5920748 Updated test and usage of older help APIs with about 2020-04-27 02:42:07 +05:30
creativcoder
75f5a9ab62 Code review p1 2020-04-27 02:42:07 +05:30
creativcoder
24cb8b13c5 Deprecate Arg::help in favour of Arg::about 2020-04-27 02:42:07 +05:30
CreepySkeleton
312432a5db Fix a bug we didn't know about 2020-04-26 21:16:14 +03:00
CreepySkeleton
c9e03e7e67 Default values trigger conflicts no more (#1605) 2020-04-26 21:16:09 +03:00
CreepySkeleton
02fac2315f Add hide_default_values to yaml 2020-04-26 13:47:53 +03:00
CreepySkeleton
3e865e565f A little cleanup 2020-04-25 15:57:12 +03:00
CreepySkeleton
2403ae796e
Apply suggestions from code review
Co-Authored-By: Pavan Kumar Sunkara <pavan.sss1991@gmail.com>
2020-04-24 23:06:13 +03:00
CreepySkeleton
756e95388f Remove _StrExt 2020-04-24 22:47:55 +03:00
CreepySkeleton
f69ec92a83 Improve panics 2020-04-24 22:34:23 +03:00
CreepySkeleton
1bbcfe2261 Do not print hash in debug builds 2020-04-24 19:19:36 +03:00
CreepySkeleton
739e7048a5 Make vec_map required dependency - in fact, it already is 2020-04-24 15:33:11 +03:00
CreepySkeleton
61a12e4296 Fix positional args in groups (#1794) 2020-04-24 13:05:46 +03:00
CreepySkeleton
2e959d6c71 Update tests 2020-04-24 11:15:55 +03:00
dylni
d12827076f Give ArgStr module a better name 2020-04-23 09:03:21 -04:00
dylni
e7b19aea58 Fix beta errors 2020-04-23 09:03:21 -04:00
dylni
9ef18519b1 Fix index calculation 2020-04-23 09:03:21 -04:00
dylni
c2246cf03f imp(src/util/osstringext.rs): Remove the last unsafe block 2020-04-23 09:02:10 -04:00
bors[bot]
0293fd7c4a
Merge #1851
1851: Allow debug logs to work with clap tests themselves r=CreepySkeleton a=pksunkara



Co-authored-by: Pavan Kumar Sunkara <pavan.sss1991@gmail.com>
2020-04-22 20:01:24 +00:00
Pavan Kumar Sunkara
f0074752b9 Improve debug logs 2020-04-22 20:56:35 +02:00
bors[bot]
c1cb0ce359
Merge #1849
1849: Arg enum r=CreepySkeleton a=pksunkara



Co-authored-by: Pavan Kumar Sunkara <pavan.sss1991@gmail.com>
2020-04-22 17:23:43 +00:00
Pavan Kumar Sunkara
dbe6ac01f6 Clean up arg_enum 2020-04-22 14:38:16 +02:00
Pavan Kumar Sunkara
01c179f527 Added arg_enum support 2020-04-22 14:37:45 +02:00
bors[bot]
3de8af46a2
Merge #1850
1850: Bugfixes r=pksunkara a=CreepySkeleton



Co-authored-by: CreepySkeleton <creepy-skeleton@yandex.ru>
2020-04-22 08:59:39 +00:00
CreepySkeleton
0e7ff777da Make sure that command line OVERRIDES env, not prepends (fix #1835) 2020-04-22 11:35:20 +03:00
CreepySkeleton
dd1505fdfd The self convention is not wrong here 2020-04-22 11:05:31 +03:00
Pavan Kumar Sunkara
4911c35869
Merge pull request #1834 from davidMcneil/arg_value_precedence_over_subcommand
Add ArgPrecedenceOverSubcommand app setting
2020-04-21 19:05:30 +02:00
David McNeil
746d9a4707 Fix SubcommandPrecedenceOverArg example indention
Signed-off-by: David McNeil <mcneil.david2@gmail.com>
2020-04-21 09:02:09 -05:00
David McNeil
709f20d713 Improve SubcommandPrecedenceOverArg description
Signed-off-by: David McNeil <mcneil.david2@gmail.com>
2020-04-21 08:31:49 -05:00
CreepySkeleton
66f85d07a0 Some extra debugging 2020-04-21 14:17:18 +03:00
David McNeil
ada5df3229 Use AppSettings::SubcommandPrecedenceOverArg
Signed-off-by: David McNeil <mcneil.david2@gmail.com>
2020-04-20 15:57:06 -05:00
bors[bot]
0a3921f554
Merge #1844
1844: Fix a couple of very minor bugs r=pksunkara a=CreepySkeleton



Co-authored-by: CreepySkeleton <creepy-skeleton@yandex.ru>
2020-04-20 16:27:34 +00:00
CreepySkeleton
3b3d2b23fd cargo clippy 2020-04-20 18:32:35 +03:00
bors[bot]
286c3e5d25
Merge #1841 #1842
1841: One less giant macro (-0.5 kB) r=pksunkara a=CreepySkeleton



1842: Allow rustc inline small functions across crates (-5.5 kB) r=pksunkara a=CreepySkeleton



Co-authored-by: CreepySkeleton <creepy-skeleton@yandex.ru>
2020-04-20 15:27:55 +00:00
CreepySkeleton
4ce2a02f78 Corectly handle --foo==a (value is =a) 2020-04-20 17:54:56 +03:00
CreepySkeleton
4d3760a0b3 Correctly handle -磨FOO 2020-04-20 15:15:28 +03:00
CreepySkeleton
32ffdfe855 Correctly handle -f==a (value is =a) 2020-04-20 13:41:37 +03:00
CreepySkeleton
f149f35da4 Allow rustc inline small functions across crates 2020-04-19 19:02:55 +03:00
CreepySkeleton
fae89db4a0 One less giant macro (-0.5 kB) 2020-04-19 15:42:08 +03:00
Donnie Adams
0584b57f29 fix: Don't print 'OPTIONS' when all options are hidden for short help 2020-04-16 08:21:41 -07:00
David McNeil
247231d1c6 Add ArgPrecedenceOverSubcommand app setting
Signed-off-by: David McNeil <mcneil.david2@gmail.com>
2020-04-16 09:08:39 -05:00
Pavan Kumar Sunkara
070bd50b28 Finished color refactor 2020-04-16 12:51:26 +02:00
bors[bot]
90e5eb6d1a
Merge #1831
1831: Handle publicity properly r=pksunkara a=CreepySkeleton



Co-authored-by: CreepySkeleton <creepy-skeleton@yandex.ru>
2020-04-16 06:36:39 +00:00
CreepySkeleton
823332e919 Handle publicity properly 2020-04-16 08:29:16 +03:00
CreepySkeleton
8d01bce5df Use ref instead of move 2020-04-16 04:52:02 +03:00
CreepySkeleton
f931c3d1e4 Suppress unused_valiables lint in non-debug builds 2020-04-16 04:32:17 +03:00
CreepySkeleton
00f2a82c3e Make debug output much more useful 2020-04-14 07:21:27 +03:00
CreepySkeleton
fdaf927384 Remove almost all #[doc(hidden)] 2020-04-14 04:26:12 +03:00
bors[bot]
500f34a8f6
Merge #1811
1811: Replace value_t*! macros with methods r=pksunkara a=CreepySkeleton



Co-authored-by: CreepySkeleton <creepy-skeleton@yandex.ru>
2020-04-13 07:49:00 +00:00
CreepySkeleton
ecd60b69a3 Fix tests 2020-04-13 04:44:13 +03:00
CreepySkeleton
af95c2b6a4 Replace value_t*! macros with methods 2020-04-13 04:20:09 +03:00
Pavan Kumar Sunkara
da32adeb0e Allow literals in builder macros 2020-04-12 23:18:39 +02:00
Pavan Kumar Sunkara
3bb8389c73 Enable ansi support for windows before refactoring 2020-04-12 10:20:08 +02:00
Pavan Kumar Sunkara
333b993481 Remove {n} support 2020-04-12 03:37:21 +02:00
CreepySkeleton
7cff206194 Make all fields of App & Arg pub(crate) 2020-04-11 18:23:20 +03:00
Bence Kalmar
4bf3f97d28 fix(arg_enum!): Invalid expansions of some trailing-comma patterns
In particular, fix macros that take an enum of one of the the following forms:

 - `#[...] enum { ... , }`
 - `pub enum { ... , }`
 - `enum { ... , }`

Previously, these expansions would result in an error message like "error: no
rules expected the token `:`".

Add extensive tests for each pattern.  Only two of the patterns had tests
before, so these errors did not surface automatically.
2020-04-10 09:35:20 +02:00
Ivan Veselov
0f3bdc439e Fix ArgMatcher consuming extra arguments when max_values is set 2020-04-10 09:35:20 +02:00
Pavan Kumar Sunkara
15edb69a0d Address review comments 2020-04-10 00:33:16 +02:00
Pavan Kumar Sunkara
f0a216036b Fix some issues 2020-04-09 19:41:33 +02:00
Pavan Kumar Sunkara
92449a4777 Assert arg groups 2020-04-09 16:51:32 +02:00
Pavan Kumar Sunkara
00a0b9660a Assert for require* on args 2020-04-09 16:51:32 +02:00
Pavan Kumar Sunkara
f632aedc72 Started on arg asserts 2020-04-09 16:51:32 +02:00
Pavan Kumar Sunkara
1c16f73c10 Start cleaning up debug_assertion validations 2020-04-09 16:51:32 +02:00
Stephan Boyer
606d120d18 Update the documentation regarding which features are enabled by default 2020-04-04 13:16:30 -07:00
AimainaHito
06b9b32d66 Added full-stop 2020-04-04 11:30:30 +02:00
AimainaHito
f472393b14 Updated value_t documentation 2020-04-03 20:32:36 +02:00
Patrick Marks
4321cba5ba set the default disp_ord of App to 999. Required for display_order and DeriveDisplay to work properly 2020-04-01 12:49:40 -07:00
Mátyás Mustoha
8687794986 style: fix comma placement for valid values when using arg_enum 2020-04-01 00:01:51 +02:00
Matthias Krüger
428a075e41 remove redundant imports and clone (found by clippy) 2020-03-25 13:43:01 +01:00
bors[bot]
2aa38e81a9
Merge #1739
1739: Remove _some_ of pubs r=pksunkara a=CreepySkeleton



Co-authored-by: CreepySkeleton <creepy-skeleton@yandex.ru>
2020-03-19 23:53:18 +00:00
CreepySkeleton
a46ab1639a Turn some integration tests into unit tests 2020-03-19 10:49:49 +03:00
CreepySkeleton
4fc4a00b8f Remove _some_ of pubs 2020-03-19 10:17:52 +03:00
CreepySkeleton
b61a807728 Fix clippy and bump MSRV 2020-03-13 22:41:40 +03:00
CreepySkeleton
3e1f6ed514 Use proper cfg 2020-03-09 23:42:14 +03:00
CreepySkeleton
329bfa9895 Get rid of extra scopes 2020-03-09 21:08:15 +03:00
Julian Laubstein
c34a0fdae9 Added tests and fixed display of conflicted flags 2020-03-08 17:11:12 +01:00
Julian Laubstein
444bce2471
Fixed #1622 2020-03-08 16:39:14 +01:00
bors[bot]
19c20f7c00
Merge #1727
1727: Fix `-- subcommand` error r=pksunkara a=ldm0



Co-authored-by: Donough Liu <ldm2993593805@163.com>
2020-03-05 13:01:05 +00:00
Donough Liu
5b9f6197b1 Test added, Apply rustfmt 2020-03-05 20:02:48 +08:00
Donough Liu
79cec6a298 Fix misplaced subcommand matching failure emitter.
Only positional args follow `--`.
2020-03-05 18:38:55 +08:00
Donough Liu
bd1b73d7c8 Another Typo 2020-03-05 17:56:24 +08:00
Donough Liu
c86ac603f1 Typo 2020-03-05 17:17:07 +08:00
Pavan Kumar Sunkara
eaae1202cb Basic github action for benchmarking 2020-03-05 09:21:39 +01:00
bors[bot]
5e0898c175
Merge #1718
1718: Fix core dump with mutually `requires()` args r=pksunkara a=CreepySkeleton



Co-authored-by: CreepySkeleton <creepy-skeleton@yandex.ru>
2020-03-04 12:51:19 +00:00
CreepySkeleton
839ed2588c Fix core dump with mutually requires() args
Fixes #1643
2020-03-04 15:21:06 +03:00
Pavan Kumar Sunkara
47782cfac6 Make cargo feature additive 2020-03-01 22:55:57 +01:00
Ivan Tham
908b7aeb44 Ambiguous suggetions for InferSubcommands
Closes #1655
2020-03-01 19:36:05 +08:00
Emily
d36277b644
Fix Clap::try_parse_from documentation 2020-02-25 16:50:47 +00:00
bors[bot]
e4a7f50128
Merge #1669
1669: refactor: Rename Arg::conflicts_with_everything to Arg::exclusive (#1… r=pksunkara a=CreepySkeleton



Co-authored-by: Gregor Pfeifer <gpfeifer@dxc.com>
2020-02-22 21:58:29 +00:00
bors[bot]
28c46b5965
Merge #1697
1697: Allow replacing input on the fly r=CreepySkeleton a=pksunkara



Co-authored-by: Pavan Kumar Sunkara <pavan.sss1991@gmail.com>
2020-02-21 19:13:59 +00:00
Pavan Kumar Sunkara
b8851a7d5e Allow replacing input on the fly 2020-02-21 18:15:33 +01:00
Cecile Tonglet
35b918bd72 Allow missing docs on arg_enum 2020-02-21 11:39:44 +01:00
bors[bot]
cc79c432a4
Merge #1701
1701: Remove unneeded file r=pksunkara a=CreepySkeleton



Co-authored-by: CreepySkeleton <creepy-skeleton@yandex.ru>
2020-02-21 09:51:56 +00:00
CreepySkeleton
4fcff089ef Remove unneeded file 2020-02-21 03:28:25 +03:00
CreepySkeleton
4f13f3155c Fix warnings on nightly 2020-02-21 01:55:19 +03:00
CreepySkeleton
43acfa00f4
Implement derive traits for Box<T> 2020-02-13 18:21:01 +03:00
bors[bot]
1e7c9efc9d
Merge #1612
1612: Use about() with help() and long_about() with long_help() r=pksunkara a=TheLostLambda

I was going through the clap documentation and was under the impression that calling `help()` would call `about()` and `long_help()` would call `long_about()`, but I've actually discovered this not to be the case. Instead, the `long_about()` was always shown when it existed, rendering the output (in the about section) of programs called with `-h` and `--help` identical. Issue #1472 shows this and that is fixed here.

Note this doesn't remove the ability to use the same about in both cases: if `long_about()` is unset, then `about()` is used in both cases.

I've changed the implementation here to use `is_some()` and `unwrap()` as opposed to `if let` because it ultimately allows for less repetitive code. Ideally, I'd be able to pair `if let` with a secondary condition (namely `self.use_long`), but to my dismay, let-chains are not stabilized yet.

For a second opinion, here is the code a settled on:
```
if self.use_long && parser.meta.long_about.is_some() {
    debugln!("Help::write_default_help: writing long about");
    write_thing!(parser.meta.long_about.unwrap())
} else if parser.meta.about.is_some() {
    debugln!("Help::write_default_help: writing about");
    write_thing!(parser.meta.about.unwrap())
}
```
Here is the alternative:
```
if self.use_long {
    if let Some(about) = parser.meta.long_about {
        debugln!("Help::write_default_help: writing long about");
        write_thing!(about)
    } else if let Some(about) = parser.meta.about {
        debugln!("Help::write_default_help: writing about");
        write_thing!(about)
   }
} else {
    if let Some(about) = parser.meta.about {
        debugln!("Help::write_default_help: writing about");
        write_thing!(about)
    }
}
```

Co-authored-by: Brooks J Rady <b.j.rady@gmail.com>
2020-02-13 07:21:05 +00:00
Brooks J Rady
9cde072b61 Use about() with help() and long_about() with long_help() 2020-02-13 00:31:45 +00:00
bors[bot]
12df8cb078
Merge #1681
1681: WIP: Extract subcommands into separate trait r=pksunkara a=CreepySkeleton

Not-yet-working-but-almost-there "multiple traits" approach. More or less done, what's left is to catch some bugs and adapt tests/examples.

For the record: it took so long because of RL stuff (who would have thought?) and because [there was a detailed description of the experience I've had here, but it was deleted because it contained a lot of profanity and emotional notes]. 

As the only person alive that understands how the derive works (if you won't blow your own horn, nobody will do it for you, yeah), I'd like to made a statement: we Do need the refactoring.

Co-authored-by: CreepySkeleton <creepy-skeleton@yandex.ru>
2020-02-12 20:42:32 +00:00