Commit graph

3485 commits

Author SHA1 Message Date
Matt Kantor
de6a5af1b2 Add a (failing) test for no args + after help. 2020-08-14 13:58:56 -07:00
Matt Kantor
4545a47ff6 Fix: {before-help} should have fallback just like {after-help}. 2020-08-14 13:58:37 -07:00
bors[bot]
16cf7685d7
Merge #2072
2072: Fix YAML's default_value_if handling r=pksunkara a=bkaestner



Co-authored-by: Benjamin Kästner <benjamin.kaestner@gmail.com>
2020-08-14 17:05:08 +00:00
Benjamin Kästner
15c441708b Fix YAML null value in fixture
The YAML null value is called `null` in YAML, not `Null`. yaml-rust
handles those values according to spec, so we should use the correct
capitalization.

See https://yaml.org/spec/1.2/spec.html#id2803362 for more
information.
2020-08-14 18:28:43 +02:00
Benjamin Kästner
2b101ad7e5 Properly handle YAML null macros for default_value_if
The macro `yaml_opt_str` is only used in `yaml_tuple3`, which again is
only used for `default_value_if`. Unfortunately, the current test
doesn't make sense, as a v.is_null() indicates a Yaml::Null, on wich
`as_str()` always returns `None`. Instead, the condition should be
negated, as the documentation of `default_value_if` hints:

> **NOTE:** If using YAML the values should be laid out as
> follows (`None` can be represented as `null` in YAML)

The case `$v.is_null()` should therefore lead to `None`, whereas all
other cases should be interpreted `as_str()`.
2020-08-14 18:28:43 +02:00
Benjamin Kästner
8a2e9804d7 Provide tests for Arg::default_value_if
While reading the code for the yaml translation, I've noticed that
there is a bug in the macro `yaml_opt_str` as well as a wrong `null`
value in the test fixture.

These tests add the expected behaviour on the given fixture, e.g.

    prog
and
    prog <WRONG>
where `<WRONG>` is **not** `other` should yield `None` for
`"positional2"`, whereas

    prog other
should yield "something" and

    prog --flag ARBITRARY_VALUE
should yield "some". The first two tests

- default_value_if_not_triggered
- default_value_if_not_triggered_by_argument

fail, as the second positional arguments *gets set*, although its
conditions aren't fulfilled.
2020-08-14 18:28:12 +02:00
Matt Kantor
2c91800099 Restore details to doc comment for help_template. 2020-08-14 09:27:42 -07:00
Matt Kantor
afcacb0626 Apply wrapping to {author} and {about} template tags.
Previously wrapping was only applied to the {*-with-newline} variants.
2020-08-14 09:14:14 -07:00
Matt Kantor
059503e54d Make {before-help} and {after-help} template tags include padding.
Previously there were separate tags for this, {before-help-padded} and
{after-help-padded}. Those have been removed and the default ones
given their behavior.
2020-08-14 09:14:10 -07:00
Pavan Kumar Sunkara
291b52982a Added opencollective sponsors to readme 2020-08-14 16:36:39 +02:00
bors[bot]
5cf782afc0
Merge #2068
2068: Fix a typo in the bug report template r=CreepySkeleton a=mkantor



Co-authored-by: Matt Kantor <the.matt.kantor@gmail.com>
2020-08-14 02:09:26 +00:00
Matt Kantor
ae0ca8fd2b Fix a typo in the bug report template. 2020-08-13 18:02:30 -07:00
Matt Kantor
a87320ae88 Use a template to produce the default help message.
This makes some changes to the template system:

- Template tags for optional items (like {author}) now expand to
  nothing when the value is unset instead of a default string (like
  "unknown author").
- Many template tags now emit line-wrapped output to match
  write_default_help.
- Items with long variants now expand to the appropriate thing for -h
  vs --help.
- The now-obsolete {long-about} tag has been removed.
- A few new tags have been added.

These are externally-visible changes, but if this makes it into 3.0
that's probably reasonable?

Note that line-wrapping can have some odd edge cases since it does not
account for preceding/trailing characters on the same line as the tag.
This is already the case in master, but will affect some additional
tags with this changeset. See #2065 for details.

Closes #2002.
2020-08-13 17:52:48 -07:00
bors[bot]
ca6c84fa8a
Merge #1961
1961: V3 docs r=CreepySkeleton a=pksunkara



Co-authored-by: Kevin K <kbknapp@gmail.com>
Co-authored-by: Pavan Kumar Sunkara <pavan.sss1991@gmail.com>
2020-08-12 14:58:09 +00:00
bors[bot]
2df656c98d
Merge #1998
1998: Relax some restrictions on validators r=pksunkara a=CreepySkeleton



Co-authored-by: CreepySkeleton <creepy-skeleton@yandex.ru>
2020-08-12 14:35:39 +00:00
Pavan Kumar Sunkara
c2e3b719ae Apply suggestions from code review
Co-authored-by: CreepySkeleton <creepy-skeleton@yandex.ru>
2020-08-12 15:50:15 +02:00
CreepySkeleton
39fadbf7c8 Rebase 2020-08-12 16:40:19 +03:00
CreepySkeleton
6169bb8e79 Fix buggy tests 2020-08-12 06:12:44 +03:00
CreepySkeleton
32414fbdff Fix and rearrange debug asserts 2020-08-12 06:12:42 +03:00
CreepySkeleton
619658e17a Add test 2020-08-12 02:39:59 +03:00
CreepySkeleton
18a58af3ac Allow validators to be FnMut 2020-08-12 02:39:59 +03:00
CreepySkeleton
790a0f5e62 Make sure that App & Arg & ArgGroup implement Send + Sync
Also relaxes 'static restriction on validators.
2020-08-12 02:39:59 +03:00
bors[bot]
9185366420
Merge #2058
2058: Add blank line between items in long help r=pksunkara a=mkantor



Co-authored-by: Matt Kantor <the.matt.kantor@gmail.com>
2020-08-11 23:30:48 +00:00
Matt Kantor
0d8ebeb36b Fix doc comment for Arg::long_about. 2020-08-11 15:30:30 -07:00
Matt Kantor
f7e2fbf150 Print an empty line after multi-line argument help.
Fixes #1642.
2020-08-11 15:30:30 -07:00
Matt Kantor
bf34c04060 Add a test for --help with long argument help. 2020-08-11 15:30:30 -07:00
Pavan Kumar Sunkara
5c0947f160 Add derive traits only if derive feature is enabled 2020-08-11 16:30:02 +02:00
Pavan Kumar Sunkara
9b22f19995 Update more docs 2020-08-11 16:08:05 +02:00
Kevin K
89fcc755e4 wip: doc updates for App
Still more to do in this file, hence the wip status
2020-08-11 15:41:00 +02:00
Kevin K
aa694c893f docs(FromArgMatches): initial draft 2020-08-11 15:21:58 +02:00
Kevin K
763f0a0363 wip: Clap trait docs 2020-08-11 15:21:57 +02:00
Kevin K
609202e2a0 wip: clap_derive docs 2020-08-11 15:21:57 +02:00
Kevin K
c76f526773 adds ctags to the gitignore 2020-08-11 15:21:57 +02:00
bors[bot]
da92a32d10
Merge #2048
2048: Change the ret tyte of Argmatches::subcommand r=pksunkara a=CreepySkeleton



Co-authored-by: CreepySkeleton <creepy-skeleton@yandex.ru>
2020-08-11 00:20:35 +00:00
bors[bot]
6492ae2353
Merge #1793
1793: Add hinting of arg value types for zsh/fish completion r=CreepySkeleton a=intgr



Co-authored-by: Marti Raudsepp <marti@juffo.org>
2020-08-07 18:14:01 +00:00
Marti Raudsepp
64ee0f8009 Add hinting of arg value types for zsh/fish completion
Adds new method/attribute `Arg::value_hint`, taking a `ValueHint` enum
as argument. The hint can denote accepted values, for example: paths,
usernames, hostnames, commands, etc.

This initial implementation supports hints for the zsh and fish
completion generators, support for other shells can be added later.
2020-08-06 22:17:31 +03:00
CreepySkeleton
f0044d205d Remove a redundant lifetime 2020-08-05 22:33:51 +03:00
CreepySkeleton
e6cc49ecde Adjust derive 2020-08-05 17:07:13 +03:00
CreepySkeleton
e9759a241b Adjust examples and tests 2020-08-05 17:07:13 +03:00
CreepySkeleton
6dcf93be00 Change the return type of ArgMatches::subcommand() 2020-08-05 13:35:42 +03:00
bors[bot]
a4bc1f2abc
Merge #2038
2038: Improve iterator use r=CreepySkeleton a=nnethercote



Co-authored-by: Nicholas Nethercote <nnethercote@mozilla.com>
2020-07-29 02:14:00 +00:00
Nicholas Nethercote
ed46e8962c refactor: Combine two large and very similar expressions. 2020-07-29 10:35:36 +10:00
Nicholas Nethercote
7fb397d905 refactor: Simplify some it.any(...) calls. 2020-07-29 10:35:34 +10:00
Nicholas Nethercote
be535e28cf refactor: Avoid unnecessary uses of enumerate(). 2020-07-29 10:35:31 +10:00
Nicholas Nethercote
d8c775eb26 refactor: Replace it.filter(...).find(...) with it.find(...). 2020-07-29 10:35:27 +10:00
Nicholas Nethercote
217b111bd7 refactor: Replace it.find(...).is_none() with !it.any(...). 2020-07-29 10:35:22 +10:00
bors[bot]
dbdd63b350
Merge #2016
2016: imp(errors): Provide the missing required arguments as info r=CreepySkeleton a=nickelc



Co-authored-by: Constantin Nickel <constantin.nickel@gmail.com>
2020-07-26 08:08:35 +00:00
bors[bot]
dda961b715
Merge #2027
2027: style: rename ErrorKind::{VersionDisplayed, HelpDisplayed} to present tense r=CreepySkeleton a=siyopao



Co-authored-by: Craig Pastro <siyopao@gmail.com>
2020-07-26 07:36:52 +00:00
bors[bot]
dd5e6b2313
Merge #2025
2025: Make lifetimes descriptive r=pksunkara a=CreepySkeleton



Co-authored-by: CreepySkeleton <creepy-skeleton@yandex.ru>
2020-07-21 16:30:08 +00:00
CreepySkeleton
37c1631f06 Make lifetimes descriptive 2020-07-21 18:59:07 +03:00