Commit graph

7561 commits

Author SHA1 Message Date
Kevin K
c46f12dbf8
Merge pull request #5 from kbknapp/metadata
Update Cargo.toml metadata.
2017-11-12 15:57:43 -05:00
Andrew Hobden
8073b57c2a
Update Cargo.toml metadata.
Point to new repo. Closes #2.
2017-11-12 20:58:36 +01:00
Kevin K
528a7cb571
Merge pull request #1102 from kbknapp/issue-1095-take2
chore: fixes the attribute to allow unused imports on nightly
2017-11-12 14:06:51 -05:00
Andrew Hobden
d2baf8b70c
init 2017-11-12 19:04:58 +01:00
Kevin K
3f1d23934d chore: fixes the attribute to allow unused imports on nightly
Closes #1095
2017-11-12 12:51:14 -05:00
Kevin K
6cd43c2361
Merge pull request #1101 from ignatenkobrain/patch-1
bump ansi_term to 0.10
2017-11-09 13:32:12 -05:00
Igor Gnatenko
851fad43c0 bump ansi_term to 0.10
Signed-off-by: Igor Gnatenko <i.gnatenko.brain@gmail.com>
2017-11-09 17:35:33 +01:00
Kevin K
de7b236dd2
Merge pull request #1100 from jfrankenau/fix-typo
docs: fix typo
2017-11-09 08:07:19 -05:00
Guillaume Pinot
f24fcb19a8 v0.1.4 2017-11-09 10:24:18 +01:00
kennytm
13fc4fb66a Implement custom string parser from either &str or &OsStr. (#28)
* Implement custom string parser from either &str or &OsStr.

Fix #2.
Fix #3.

* Addressed review comments.
2017-11-09 10:23:02 +01:00
Johannes Frankenau
002b07fc98 docs: fix typo 2017-11-09 08:56:45 +01:00
Kevin K
38fe447292
Merge pull request #1096 from kbknapp/issues-1093,1095
Issues 1093,1095
2017-11-06 21:48:07 -05:00
Kevin K
e78bb757a3 imp: adds '[SUBCOMMAND]' to usage strings with only AppSettings::AllowExternalSubcommands is used with no other subcommands
Closes #1093
2017-11-06 20:15:07 -05:00
Kevin K
fb08bb5dd5 refactor: removes unused imports on nightly via cfg directive
If one is using a nightly Rust compiler they should compile clap
with the `nightly` feature.

```toml
[dependencies]
clap = { version = "2.27", features = ["nightly"] }
```

This isn't required for compilation to succeed, only to take
advantage of any nightly features used by clap.

If one is compiling with `#[deny(warnings)]` this commit will cause
compilation to fail if one *does not* compile with the `nightly`
since `std::ascii::AsciiExt` is no longer required in in multiple
files as of the latest Rust nightly (Nov 6th, 2017).

Closes #1095
2017-11-06 20:11:19 -05:00
Kevin K
284d01bded
Merge pull request #1091 from kbknapp/contrib-update
chore: updates CONTRIBUTORS.md
2017-11-02 23:24:19 -04:00
Kevin K
4ee2dfccff chore: updates CONTRIBUTORS.md 2017-11-02 23:23:59 -04:00
Kevin K
fb8f88be74
Merge pull request #1090 from kbknapp/readme-update
docs(README.md): updates the readme and pulls out some redundant sect…
2017-11-02 23:15:38 -04:00
Kevin K
db6caf8663 docs(README.md): updates the readme and pulls out some redundant sections 2017-11-02 23:15:02 -04:00
Guillaume Pinot
43710cf969 update to 0.1.3 2017-11-01 22:35:27 +01:00
Guillaume Pinot
d1170466df fix #9 2017-11-01 22:32:32 +01:00
Guillaume Pinot
29a642b10d fix #12 2017-11-01 22:31:33 +01:00
Guillaume Pinot
5ba275680b new release 2017-11-01 22:13:20 +01:00
Guillaume Pinot
96a726aeb7 Handle multiline doc comment as help message
fix #25
2017-11-01 22:13:20 +01:00
Guillaume Pinot
4880ccb025 Fix a privacy bug
Fix #24
2017-11-01 22:13:20 +01:00
Guillaume Pinot
f7a4be13ca update to 0.1.1 2017-11-01 21:17:40 +01:00
Seebi
ebde32aa5b Add raw attributes (#26)
* Add raw attributes

This makes it possible to call clap functions that don't take strings,
but any arbitrary value. Even functions that take more than one argument
can be called.

All attributes that are called `attribute_name_raw` are augmented to
`attribute_name(value)` without quoting `value`.

* Add tests for raw attributes and fix spelling
2017-11-01 08:41:58 +01:00
Kevin K
d5423a48ee
Merge pull request #1087 from durka/propag-depr
fix: ignore PropagateGlobalValuesDown deprecation warning
2017-10-28 10:56:34 -04:00
Alex Burka
f61ce3f55f fix: ignore PropagateGlobalValuesDown deprecation warning
Fixes #1086.
2017-10-27 12:54:03 -04:00
Kevin K
fc4bd87853 Merge pull request #1084 from kbknapp/issue-1083
Issue 1083
2017-10-26 11:05:17 -04:00
Kevin K
67170a8bd7
chore: increase version 2017-10-26 10:09:48 -04:00
Kevin K
0246960bdc
chore: adds term_size as an optional dep 2017-10-26 09:40:21 -04:00
Kevin K
554083ffc5 Merge pull request #1081 from kbknapp/kbknapp-patch-1
Fix typo in minimum required Rust version
2017-10-24 21:51:35 -04:00
Kevin K
bbd0589c19 Fix typo in minimum required Rust version 2017-10-24 21:51:21 -04:00
Kevin K
794ac237de Merge pull request #1080 from kbknapp/kbknapp-patch-1
chore: fix copy paste typo
2017-10-24 21:50:32 -04:00
Kevin K
385596f6f6 chore: fix copy paste typo 2017-10-24 21:50:19 -04:00
Kevin K
fe814b88e3 Merge pull request #1079 from kbknapp/issues-1031,1050,1056,1066,1071
Issues 1031,1050,1056,1066,1071
2017-10-24 21:49:18 -04:00
Kevin K
3a471b72ce
docs: fixes some typo mistakes 2017-10-24 20:30:11 -04:00
Kevin K
e3eaf56b36
chore: increase version 2017-10-24 15:31:33 -07:00
Kevin K
2558083fe9
tests: adds tests to guard against allowing invalid args accidentally 2017-10-24 15:21:52 -07:00
Kevin K
77ed46841f
fix: fixes a bug where using AppSettings::AllowHyphenValues would allow invalid arguments even when there is no way for them to be valid
Prior to this commit, using `AppSettings::AllowHyphenValues` would allow
ANY argument to pass, even if there was no way it could be valid.

Imagine a CLI with only a single flag (i.e. *no value*) `--flag`, but this setting
is set. The following was valid:

```
$ prog hello
```

This commit fixes that by creating an UnknownArgument error unless the
unknown argument/value in question could legally be parsed as a value
to a valid argument.

Closes #1066
2017-10-24 15:18:56 -07:00
Kevin K
9435b2a589
tests: adds tests to make sure args are preferred over matching subcommands when values are possible 2017-10-24 14:59:31 -07:00
Kevin K
03455b7751
docs: adds addtional blurbs about using multiples with subcommands 2017-10-24 14:59:25 -07:00
Kevin K
0c223f54ed
fix: when an argument requires a value and that value happens to match a subcommand name, its parsed as a value
**This commit contains a breaking change in order to fix a bug.**

The only users affected are those relying on the "bug." The bug is only in code that uses
subcommands, and parent commands with arguments accepting multiple values (positionals or options)
unrestrained *and* where a value may coincide with a subcommand's name.

Imagine a CLI with a positional argument `files` that accepts multiple values but no other conditions
or parameters (just `Arg::multiple(true)`), and a subcommand `log`

Prior to this commit, the following was valid:

```
$ prog file1 file2 file3 log
```

which would be parsed as:

 * files = file1, file2, file3
 * subcommand = log

However, if there was a file named `log` the subcommand isn't callable.

The CLI should be designed in a way that either limits number of values so that clap knows
when `files` is done and can then look for subcommands, or other AppSettings which change
the behavior.

Possible fixes are `Arg::number_of_values`, `Arg::max_values`,
`AppSettings::ArgsNegateSubcommands`, `Arg::require_equals`,
`AppSettings::SubcommandsNegateArgs`, and more.

This *does not* affect CLIs which contain other arguments between the unrestrained multiple
value args, and the any subcommands. Such as if our example above also had a flag `-f`

The following would be parsed the same before and after this commit.

```
$ prog file1 file2 file3 -f log
```

This is because upon reaching the flag `-f`, clap stops parsing `files`.

No other breaking changes were made.

---

When using args with `multiple(true)` on options or positionals (i.e. those args that
accept values) and subcommands, one needs to consider the posibility of an argument value
being the same as a valid subcommand. By default `clap` will parse the argument in question
as a value *only if* a value is possible at that moment. Otherwise it will be parsed as a
subcommand. In effect, this means using `multiple(true)` with no additional parameters and
a possible value that coincides with a subcommand name, the subcommand cannot be called
unless another argument is passed first.

As an example, consider a CLI with an option `--ui-paths=<paths>...` and subcommand `signer`

The following would be parsed as values to `--ui-paths`.

```
$ program --ui-paths path1 path2 signer
```

This is because `--ui-paths` accepts multiple values. `clap` will continue parsing values
until another argument is reached and it knows `--ui-paths` is done.

By adding additional parameters to `--ui-paths` we can solve this issue. Consider adding
`Arg::number_of_values(1)` as discussed above. The following are all valid, and `signer`
is parsed as both a subcommand and a value in the second case.

```
$ program --ui-paths path1 signer
$ program --ui-paths path1 --ui-paths signer signer
```

Closes #1031
2017-10-24 14:59:23 -07:00
Kevin K
b399ee2604
tests: adds tests to ensure number_of_values and default_value can be used together 2017-10-24 12:57:04 -07:00
Kevin K
5eb342a99d
fix: fixes a bug that prevented number_of_values and default_values to be used together
Closes #1050
Closes #1056
2017-10-24 12:56:02 -07:00
Kevin K
f7a6955238
tests: adds tests to make sure args with default values can have conflicts 2017-10-24 12:23:29 -07:00
Kevin K
58b5b4be31
fix: fixes a bug that didn't allow args with default values to have conflicts
Closes #1071
2017-10-24 12:22:44 -07:00
Kevin K
9cb92c17c5 Merge pull request #1077 from kbknapp/issue-1076
Issue 1076
2017-10-24 14:59:18 -04:00
Kevin K
2c3f7f6054
tests: adds tests to protect against panics when using globals and calling App::get_matches_from_safe_borrow multiple times 2017-10-24 10:46:00 -04:00
Kevin K
d86ec79742
fix: fixes a panic when using global args and calling App::get_matches_from_safe_borrow multiple times
Closes #1076
2017-10-24 10:45:52 -04:00