Commit graph

3419 commits

Author SHA1 Message Date
Kevin K
0f2a378219
api: provides default_value_os and default_value_if[s]_os
One can now define default values that contain invalid UTF-8.

The underlying implementation has also been changed to use OsStrs in order to avoid duplication
of code and provide the new APIs basically for free.

Closes #849
2017-02-20 20:24:24 -05:00
Kevin K
fb7057cc7a
refactor(Arg): removes duplicate and uses Base, Switched, and Valued internally now 2017-02-20 19:06:36 -05:00
Kevin K
65b12f9107
chore: clippy run 2017-02-20 19:06:36 -05:00
Niklas Claesson
1971209c0c Fix minor documentation bug 2017-02-20 23:13:06 +01:00
Kevin K
e0f6b35187
Merge branch 'master' of github.com:kbknapp/clap-rs 2017-02-19 13:31:25 -05:00
Homu
e5159f77e7 Auto merge of #862 - pkgw:pr-atty, r=kbknapp
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-20 03:30:39 +09: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
595926382e
Merge branch 'master' of github.com:kbknapp/clap-rs 2017-02-18 11:45:48 -05:00
Kevin K
6f9a0baff2 chore: increase version (#858) 2017-02-18 11:45:30 -05:00
Kevin K
9626a1fbe7
chore: increase version 2017-02-18 11:44:38 -05:00
Homu
afd55dda1d Auto merge of #857 - eddyb:patch-1, r=kbknapp
Add missing fragment specifier to a clap_app! rule.

Introduced in #238, this bug affects both `clap` `1.*` and `2.*` and was found by rust-lang/rust#39419.
I'd suggest releasing not only `2.20.5`, but also `1.5.6`, to cover downstream crates still on `1.5.5`.
2017-02-19 01:39:53 +09:00
Eduard-Mihai Burtescu
f28b2353b2 Add missing fragment specifier to a clap_app! rule. 2017-02-18 12:03:41 +02:00
Homu
cb81ce59e5 Auto merge of #855 - pkgw:pr-testfix, r=kbknapp
tests: fix clap_app! doctest

I need these changes to get all of the tests to pass on Linux.
2017-02-17 11:13:46 +09:00
Peter Williams
e635658dad tests: fix clap_app! doctest 2017-02-16 10:48:34 -07: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
Homu
649f14a452 Auto merge of #852 - kbknapp:issue-846, r=kbknapp
Issue 846
2017-02-16 03:24:07 +09: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
5e9b9cf4dd
fix(Completions): fixes a bug that tried to propogate global args multiple times when generating multiple completion scripts
Closes #846
2017-02-15 11:01:41 -05:00
Guillaume P
52d2550d4e Update README.md 2017-02-11 13:56:11 +01:00
Guillaume Pinot
66e75fe3cc Don't ask to the user to import the good clap version 2017-02-11 13:39:09 +01:00
Guillaume Pinot
6d4aa55c60 Correct default values using cargo environment variables 2017-02-11 00:32:01 +01:00
Guillaume P
0646262757 corrections on README.md 2017-02-10 01:28:00 +01:00
Guillaume Pinot
36cfbc4c10 docopt badge on structopt-derive in README.md 2017-02-10 01:23:09 +01:00
Guillaume Pinot
6d73942385 add travis badge to cargo 2017-02-10 01:19:16 +01:00
Guillaume Pinot
72d9c576d3 desactivate doctest on structopt-derive doc 2017-02-10 01:18:47 +01:00
Guillaume Pinot
258a85c710 document structop-derive 2017-02-10 01:14:39 +01:00
Guillaume Pinot
d3872e0984 add example.rs 2017-02-09 22:51:41 +01:00
Guillaume P
c9e7ad90df Presentation in README.md 2017-02-09 22:31:06 +01:00
Homu
3f71a017d6 Auto merge of #844 - crazymerlyn:master, r=kbknapp
docs: Fix examples link in CONTRIBUTING.md

The current link to examples doesn't work. Probably left behind from when CONTRIBUTING.md was in the root directory.
2017-02-10 00:47:54 +09:00
Guillaume Pinot
e3492f74fa support custom name 2017-02-07 23:34:40 +01:00
Guillaume Pinot
8d095c609d refactor 2017-02-07 23:03:13 +01:00
Ankit Goel
60cf875d67 docs: Fix examples link in CONTRIBUTING.md 2017-02-08 01:26:58 +05:30
Guillaume Pinot
b0cf3af9c9 example with args 2017-02-07 01:52:26 +01:00
Guillaume Pinot
fdc18d07bb add flag tests 2017-02-07 01:41:16 +01:00
Guillaume Pinot
4e4bbabfa7 manage not require extern crate clap from user 2017-02-07 00:19:18 +01:00
Guillaume Pinot
afd812cf5a validator + default value 2017-02-06 23:55:46 +01:00
Guillaume Pinot
edc9d69f03 support attrs in struct 2017-02-06 01:00:27 +01:00
Guillaume Pinot
1196571909 use attributes 2017-02-05 02:06:39 +01:00
Guillaume Pinot
36b39727b1 support different options 2017-02-04 01:43:44 +01: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
Guillaume Pinot
3ec065a12a Init project 2017-02-03 01:17:31 +01:00
Kevin K
75e815aa3a chore: increase version (#837) 2017-01-30 20:55:02 -05:00
Homu
e9e01e13dd Auto merge of #832 - mgeisler:fix-wrapping-bugs, r=kbknapp
Fix wrapping bugs

I've been working towards integrating my [textwrap][1] crate and along the way, I found some small problems in the existing `wrap_help` function in clap. I basically added new code that calls both `textwrap::fill` and `wrap_help` and panicked on any difference:
```
fn wrap_help(help: &mut String, longest_w: usize, avail_chars: usize) {
    let input = help.clone();
    let mut old = help.clone();
    old_wrap_help(&mut old, longest_w, avail_chars);

    let mut wrapped = String::with_capacity(help.len());
    for (i, line) in help.lines().enumerate() {
        if i > 0 {
            wrapped.push('\n');
        }
        wrapped.push_str(&textwrap::fill(line, avail_chars));
    }

    // TODO: move up, This keeps old behavior of not wrapping at all
    // if one of the words would overflow the line
    if longest_w < avail_chars {
        *help = wrapped;
    }

    if *old != *help {
        println!("********************************");
        println!("longest_w: {}, avail_chars: {}", longest_w, avail_chars);
        println!("help: {:3} bytes: {:?}", input.len(), input);
        println!("old:  {:3} bytes: {:?}", old.len(), old);
        println!("new:  {:3} bytes: {:?}", help.len(), help);
        println!("********************************");
        panic!("bad wrap");
    }
}

fn old_wrap_help(help: &mut String, longest_w: usize, avail_chars: usize) {
    // ... as before
```

This PR fixes two small problems discovered this way, one of which became #828.

[1]: https://crates.io/crates/textwrap
2017-01-31 08:53:31 +09:00
Martin Geisler
564c5f0f17 fix: allow final word to be wrapped in wrap_help
Before, inserting a newline did not move the prev_space index forward.
This meant that the next word was measured incorrectly since the
length was measured back to the word before the newly inserted
linebreak.

Fixes #828.
2017-01-30 18:33:48 +01:00
Martin Geisler
563a539a8e tests: show how final word is not always wrapped
This is #828.
2017-01-30 18:33:48 +01:00
Martin Geisler
84d8c5476d fix: actually show character in debug output
The &help[j..j] string slice was empty so nothing was shown.
2017-01-30 18:33:48 +01:00
Martin Geisler
aff4ba18da fix: include final character in line lenght
Before, wrapping the help text at, say, 80 characters really meant
that every line could be at most 79 characters wide.

Lines can now be up to and including avail_chars columns wide.

If needed, a desired margin or padding can be subtracted from the
avail_chars argument at a later point.
2017-01-30 18:33:48 +01:00
Homu
72d7bf39b9 Auto merge of #830 - kbknapp:issue-826, r=kbknapp
Issue 826
2017-01-30 13:32:01 +09:00