1658: Faster CI r=CreepySkeleton a=pksunkara
* Moved away from appveyor to decrease the CI time using parallel jobs.
* Improved caching on travis (TODO: azure)
Don't mind the appveyor failing. I will remove those hooks once this PR is merged.
The total CI waiting time decreased from 1 hr to 15-20 mins.
Co-authored-by: Pavan Kumar Sunkara <pavan.sss1991@gmail.com>
1656: Added tests for cargo macros, fixes#1478 r=pksunkara a=pksunkara
When you approve this PR, instead of merging it, please comment "bors r+". I want to test the bors workflow.
Co-authored-by: Pavan Kumar Sunkara <pavan.sss1991@gmail.com>
* parse: fix build in debug mode
This fixes a build failure in debug mode, as the value to be printed
does not implement Display.
* output: get rid of an unsafe block
This get rid of an unsafe block which is not necessary, and only used
when building in debug mode.
> incidentally, how do we feel about adding a rustfmt check to the CI(s)?
yes we should be doing that. you can send another pr that adds the check to the Ci
* Automatic naming of fields and subcommands (#143)
* Introduce smarter parsing of doc comments. (#146)
* Fix invalid structopt syntax error message (#154)
There was a typo preventing the probematic attr to be shown to the user.
* Fix spelling: occurences -> occurrences, (#158)
was found in comments and code, but required no user-facing API change.
* Remove line-ending periods from short help. (#161)
* Fix#168
* Support Option<Option<T>> field types (#190)
* Support Option<Vec<T>> field type (#191)
* Fix use of deprecated function
* Fix some clippy lints
* Update deprecated function and provide more info about the parsing error (#193)
* Improve ChangeLog as suggested by @ErichDonGubler (#194)
* [Casing] Change default from verbatim to kebab. (#204)
.. fixesTeXitoi/structopt#202
* Use trybuild for testing expected proc macro errors (#205)
* Custom attributes parser (#198)
* update README.md for 0.3
fix#208
* Small fixes: clippy and typos (#215)
* Add example for environment variables (#160) (#216)
* Support skipping struct fields (#213)
* Now error messages highlight the error location (#225)
* Minor fixes
* Change behavior of `about/author/version` and ad `no_version`
* Emit error about `raw` removal
* Update changelog
* Update keyvalue example (#234)
* Update documentation and changelog (#236)
* Update dependencies (#227)
* Bump minimum rustc version to 1.36
* Fix issues
* Fix structopt-derive permissions (#239)
* Fix#245 (#246)
* Emit dummy impls on error (#248)
* Fix changelog example (#250)
* Do not call .verison() when CARGO_PKG_VERSION is not set
* Update and improve docs
* Propagate span info from origin code to generated code
Most of `quote!` invocations are replaced with `quote_spanned!` ones.
Now everywhere - sometimes it's pointless, sometimes we don't have
any meaningless location to toke a span from, sometimes I just can't
workaround the current implementation - too much changes.
* Fix nightly tests
* Do not mangle `author` string inside `<...>`
* Support `skip = value` syntax
* Fix code formatting
* Fix nightly tests
* Run ui tests only on stable
* Add from_flag parser (#271)
* Clarify docs and error messages (#277)
* Fix parse for OptionVec (#279)
ref pull #191
* Fix#269 and #265 (#278)
* Pass the try_from_str functions a &str instead of a &String. (#282)
In most cases this doesn't matter, as &String is coerced to a &str, but
this fails for generic functions like CString::new.
* Add an example of a negative flag (i.e. --no-verbose)
Question from https://github.com/TeXitoi/structopt/issues/280
* Fix#283 (#284)
Fix#283
* Add `examples/README.md` and do some cleanup
* Handle special types correctly
* cargo clippy
* Handle inter-expansion top-level args properly
* Cleanup tests
* Update proc-macro-error to v0.4
* Offer helpful suggestion on `raw(...)` error
* Add `after_help` example
* Prohibit positional `bool` args
* Add tests/utils.rs
* fixed typo, removed misleading doc
* Remove CHANGELOG additions
* Rust 2018
* Addressed review
Co-authored-by: rnd <bruno.kirschner@online.de>
Co-authored-by: Robin Lambertz <github@roblab.la>
Co-authored-by: florianjacob <accounts+github@florianjacob.de>
Co-authored-by: Ted Driggs <ted.driggs@outlook.com>
Co-authored-by: Guillaume P. <TeXitoi@users.noreply.github.com>
Co-authored-by: Ivan Veselov <veselov@gmail.com>
Co-authored-by: Owen Walpole <owenthewizard@hotmail.com>
Co-authored-by: Robin Stocker <robin.stocker@gmail.com>
Co-authored-by: CreepySkeleton <creepy-skeleton@yandex.ru>
Co-authored-by: Ophir LOJKINE <ophir.lojkine@auto-grid.com>
Co-authored-by: kpcyrd <git@rxv.cc>
Co-authored-by: Luiz F. A. de Prá <luizdepra@users.noreply.github.com>
Co-authored-by: Andy Weiss <wvvwwvw@gmail.com>
Co-authored-by: xiaoniu-578fa6bff964d005 <32661032+xiaoniu-578fa6bff964d005@users.noreply.github.com>
Co-authored-by: Mara Bos <m-ou.se@m-ou.se>
Co-authored-by: Renê Couto e Silva <31329678+csrene@users.noreply.github.com>
* Clarify documentation usage as help text for subcommands
As outlined in https://github.com/clap-rs/clap/issues/1619 I did not understand why the `SUBCOMMANDS` section of `help` would not print a String `/// A subcommand for controlling testing` for the `Test` subcommand.
This PR updates the README to hopefully make this clearer.
The only change is adding a doc line:
```rust
#[derive(Clap)]
enum SubCommand {
/// A help message for the Test subcommand
Test(Test),
}
```
* Move annotation to the variant
Still regarding https://github.com/clap-rs/clap/issues/1619
I think the line that set the version of the subcommand was at the wrong place.
The example code.
~~~rust
use clap::{App, Arg};
fn main() {
let matches = App::new("My Super Program")
.arg(
Arg::with_name("verbose")
.help("Sets the level of verbosity")
.short('v')
.long("verbose")
.takes_value(false)
.multiple_occurrences(true)
.env("VERBOSE"),
)
.get_matches();
match matches.occurrences_of("verbose") {
0 => println!("0 No verbose info"),
1 => println!("1 Some verbose info"),
2 => println!("2 Tons of verbose info"),
3 | _ => println!("3 >= Don't be crazy"),
}
}
~~~
It code use multiple_occurrences with env.
But it do not work.
`env` method set require take value.
It result see under.
~~~console
% cargo run -- -v
Finished dev [unoptimized + debuginfo] target(s) in 0.01s
Running `target/debug/foo -v`
error: The argument '--verbose <verbose>...' requires a value but none was supplied
USAGE:
foo [OPTIONS]
For more information try --help
~~~
And, structopt or clap_derive may be create similar code.
So I am confused by structopt.
This to fix code small.
The first example doesn't compile. The Test structure is missing a `struct` statement, and the `.config` field exists as `.file`. Looking at the flag fields, `config` seems like the expected field name.
Using
```
[dependencies]
clap = { git = "https://github.com/clap-rs/clap", features = ["wrap_help"] }
```
Signed-Off-By: Matthew Fisher <matt.fisher@microsoft.com>