Commit graph

280 commits

Author SHA1 Message Date
golem131
77763e1e29 Update bitflags 0.8.0 -> 0.9 2017-06-10 17:38:18 -04:00
Martin Geisler
b93870c10a feat: use textwrap crate for wrapping help texts
The textwrap crate uses a simpler linear-time algorithm for wrapping
the text. The current algorithm in wrap_help uses several O(n) calls
to String::insert and String::remove, which makes it potentially
quadratic in complexity.

Comparing the 05_ripgrep benchmark at commits textwrap~2 and textwrap
gives this result on my machine:

 name              before ns/iter  after ns/iter  diff ns/iter   diff %
 build_app_long    22,101          21,099               -1,002   -4.53%
 build_app_short   22,138          21,205                 -933   -4.21%
 build_help_long   514,265         284,467            -229,798  -44.68%
 build_help_short  85,720          85,693                  -27   -0.03%
 parse_clean       23,471          22,859                 -612   -2.61%
 parse_complex     29,535          28,919                 -616   -2.09%
 parse_lots        422,815         414,577              -8,238   -1.95%

As part of this commit, the wrapping_newline_chars test was updated.
The old algorithm had a subtle bug where it would break lines too
early. That is, it wrapped the text like

    ARGS:
        <mode>    x, max, maximum   20 characters, contains
                  symbols.
                  l, long           Copy-friendly,
                  14 characters, contains symbols.
                  m, med, medium    Copy-friendly, 8
                  characters, contains symbols.";

when it should really have wrapped it like

    ARGS:
        <mode>    x, max, maximum   20 characters, contains
                  symbols.
                  l, long           Copy-friendly, 14
                  characters, contains symbols.
                  m, med, medium    Copy-friendly, 8
                  characters, contains symbols.";

Notice how the word "14" was incorrectly moved to the next line. There
is clearly room for the word on the line with the "l, long" option
since there is room for "contains" just above it.

I'm not sure why this is, but the algorithm in textwrap handles this
case correctly.
2017-05-29 17:02:57 -04:00
Martin Geisler
dd4c41e237 cargo: restrict unicode-segmentation to ~1.1.0
The newly released version 1.2.0 of unicode-segmentation adds code
that use the "?" operator, which in turn requires Rust 1.13.0.
However, clap currently still works with Rust 1.11.0 and this caused
build failures:

  https://travis-ci.org/kbknapp/clap-rs/jobs/235010822

The changes since 1.1.0 seem to be related cursors/iterators and I
think clap can work fine without them.
2017-05-28 19:37:53 -04:00
Kevin K
2923515a0a chore: increase version' 2017-05-16 07:23:22 -04:00
golem131
3deb1943e0 Dependency update 2017-05-11 20:45:15 -04:00
Kevin K
c556b39fd0 chore: increase version 2017-05-07 10:46:03 -04:00
Kevin K
bd4dbb4214 chore: increase version 2017-05-05 18:59:32 +02:00
Kevin K
2572150558
chore: increase version 2017-04-18 23:19:24 -04:00
Kevin K
f842e8fcec
chore: increase version 2017-04-09 14:40:43 -04:00
Kevin K
e05100b73d
imp: bumps term_size to take advantage of better terminal dimension handling 2017-04-09 14:39:38 -04:00
Kevin K
6095f239ba chore: increase version 2017-04-05 10:59:55 -04:00
Kevin K
b48a5bb930 chore: bump minor version due to bug fix that may break code that was relying on said bug 2017-04-04 20:11:33 -04:00
Kevin K
8bcc4d632c chore: increase version 2017-03-30 13:35:36 -04:00
Kevin K
f922b05178 chore: increase version 2017-03-24 11:27:23 -04:00
Kevin K
cc1985b6d8
chore: increase version 2017-03-22 20:29:40 -04:00
Kevin K
0b4177f151
chore: increase version 2017-03-22 20:23:55 -04:00
Kevin K
684aa99ee0
chore: increase version 2017-03-16 21:50:26 -04:00
Kevin K
e7c2eafb26
chore: increase version 2017-03-12 12:56:23 -04:00
Kevin K
10f1ebce7f
chore: ups the codegen units for test builds 2017-03-11 12:14:54 -05:00
Kevin K
9d4535e1c3
chore: clippy run 2017-03-10 08:24:30 -05:00
Kevin K
a2e31b27b0
chore: increase version 2017-03-10 08:24:29 -05:00
Kevin K
432837624c
chore: tags release beta 2017-03-10 08:22:31 -05:00
Anthony Ramine
f4939ad560 Remove direct dependency on libc
It's not actually used anymore anywhere.
2017-03-05 19:44:16 +01:00
Kevin K
5471b67121
chore: updates version to next release num 2017-02-28 08:30:14 -05:00
Kevin K
85a636d539
tests(Benches): adds real world benchmarks 2017-02-28 08:30:13 -05:00
Corey Farwell
242020330d Bump vec_map. 2017-02-28 00:05:53 -05:00
Igor Gnatenko
40052bdc0c switch to regex 0.2 (#876)
Signed-off-by: Igor Gnatenko <ignatenko@redhat.com>
2017-02-26 22:37:03 -05:00
Igor Gnatenko
d19d56e635 Cargo.toml: bump bitflags 2017-02-25 23:57:14 +01:00
Peter Williams
68e03681d8 refactor: use the atty crate for isatty() detection
Not only does this remove some unsafe code from clap itself, `atty` does the
right thing on Windows too. This isn't relevant now since we don't currently
support colorized output on Windows, but will come in handy if/when we
implement that feature (#836).
2017-02-19 11:12:55 -05:00
Kevin K
6f9a0baff2 chore: increase version (#858) 2017-02-18 11:45:30 -05:00
Kevin K
e3296e566b Docs (#854)
* docs(App::template) adds missing categories and fixes descriptions

* docs(clap_app): documents all the shorthand syntax

Closes #736

* chore: fixes crates.io category...hopefully
2017-02-16 09:44:44 -05:00
Kevin K
31a6b17a92
chore: increase version 2017-02-15 11:06:48 -05:00
Kevin K
cb1818f23a
chore: fixes crates.io category 2017-02-15 11:04:55 -05:00
Kevin K
92919f5f67 Call this PR "Raid" cause it's squashin bugs! (#843)
* tests: adds tests for default values triggering conditional requirements

* fix: fixes a bug where default values should have triggered a conditional requirement but didnt

Closes #831

* tests: adds tests for missing conditional requirements in usage string of errors

* fix: fixes a bug where conditionally required args werent appearing in errors

* tests: adds tests for completion generators

* tests: adds tests for completions with binaries names that have underscores

* fix: fixes a bug where ZSH completions would panic if the binary name had an underscore in it

Closes #581

* fix: fixes bash completions for commands that have an underscore in the name

Closes #581

* chore: fix the category for crates.io

* docs(Macros): adds a warning about changing values in Cargo.toml not triggering a rebuild automatically

Closes #838

* fix(Completions): fixes a bug where global args weren't included in the generated completion scripts

Closes #841

* fix: fixes a println->debugln typo

* chore: increase version
2017-02-03 17:43:49 -05:00
Kevin K
07d985d8c5 Issues 839,840 (#842)
* fix: fixes a critical bug where subcommand settings were being propogated too far

Closes #832

* imp: adds ArgGroup::multiple to the supported YAML fields for building ArgGroups from YAML

Closes #840

* chore: increase version
2017-02-03 15:46:25 -05:00
Kevin K
8e2e7448e9
chore: increase version 2017-01-29 21:24:40 -05:00
Kevin K
6802ac4a59
imp: updates libc and term_size deps for the libc version conflict 2017-01-29 21:18:57 -05:00
Jimmy Cuadra
c0bccaa474 Relax dependency version constraints. (#823)
It's good practice for a library not to depend on exact versions of any
other libraries, so that downstream programs are able to update
dependencies they have in common at their leisure.

This is described in the Cargo documentation at:
http://doc.crates.io/faq.html#why-do-binaries-have-cargolock-in-version-control-but-not-libraries

An example of the problem an exact version depedency creates can be seen
at https://gist.github.com/jimmycuadra/ac26eca5f11960c357d6fba841640f2f.

This patch modifies Cargo.toml to allow semver-compatible updates to
clap's dependencies.
2017-01-29 18:14:46 -08:00
Jake Goulding
8615aee9ac Add categories to Cargo.toml 2017-01-20 11:16:49 -05:00
Kevin K
20a2d95ddf
chore: bumps term_size version 2017-01-02 12:23:03 -05:00
Kevin K
fabe9267ee
chore: updates deps and pins pre-1.0 crates 2016-12-30 22:03:36 -05:00
Kevin K
1c9e8700d4
chore: bumps version in prep for more commits 2016-12-28 23:57:13 -05:00
Kevin K
68dadde061 Merge branch 'master' into issue-shortcircuit-help 2016-12-28 09:33:16 -05:00
Kevin K
e79124e4c2
chore: increase version 2016-12-28 04:26:59 -05:00
Jędrzej
6fdd2f9d69 feat(no_cargo): add no_cargo feature to disable Cargo-env-var-dependent macros (#786) 2016-12-27 21:07:59 -05:00
Kevin K
7144419598
chore: increase version 2016-12-08 15:41:03 -05:00
Kevin K
a9d5453085
chore: increase version 2016-12-01 18:53:26 -05:00
Kevin K
cf0638452a
chore: updates the minimum regex crate version 2016-11-20 21:27:38 -05:00
Kevin K
b1053f1016
chore: clippy run 2016-11-20 14:47:04 -05:00
Kevin K
b4f2e2a1b6
chore: clippy run 2016-11-11 15:48:40 -05:00