1# Change Log 2All notable changes to this project will be documented in this file. 3 4The format is based on [Keep a Changelog](http://keepachangelog.com/) 5and this project adheres to [Semantic Versioning](http://semver.org/). 6 7## 5.0.0 - 2022-11-24 8 9### Breaking Changes 10 11- Made `ArgPredicate` `non_exhaustive` 12- *(derive)* `Vec<Vec<T>>` types are now assuming to capture occurrences 13 14### Features 15 16- *(derive)* Group values by their occurrence with `Vec<Vec<T>>` 17 18<!-- next-header --> 19## [Unreleased] - ReleaseDate 20 21## [4.1.13] - 2023-03-18 22 23### Performance 24 25- Reduce repeated alloc calls when building a `Command` 26- Reduce duplicate dependencies for faster builds 27 28## [4.1.12] - 2023-03-18 29 30### Internal 31 32- *(derive)* Update to `syn` v2 33 34### Performance 35 36- *(derive)* Faster build times by dropping `proc-macro-error` dependency 37 38## [4.1.11] - 2023-03-17 39 40### Internal 41 42- Update `bitflags` 43 44## [4.1.10] - 2023-03-17 45 46### Fixes 47 48- *(help)* On Windows, avoid underlined text artifacts 49 50## [4.1.9] - 2023-03-16 51 52### Fixes 53 54- *(assert)* Improve the assert when using the wrong action with `get_count` / `get_flag` 55 56## [4.1.8] - 2023-02-27 57 58### Fixes 59 60- *(derive)* Don't `deny` lints on the users behalf 61 62## [4.1.7] - 2023-02-27 63 64### Fixes 65 66- *(derive)* Hide some nightly clippy warnings 67 68## [4.1.6] - 2023-02-15 69 70### Fixes 71 72- *(help)* Don't show long help for `--help` just because hidden possible values include a description 73 74## [4.1.5] - 2023-02-15 75 76### Fixes 77 78- *(help)* Don't show long help for `--help` just because a hidden arg has a possible value with a description 79 80## [4.1.4] - 2023-01-24 81 82### Fixes 83 84- *(help)* Respect `disable_colored_help` when using `arg_required_else_help` 85 86### Performance 87 88- Speed up compiling `arg!` macro 89 90## [4.1.3] - 2023-01-23 91 92### Fixes 93 94- *(error)* Improve suggested flag/value/subcommand when two share a long preifx 95- *(error)* When suggesting one of several subcommands, use the plural `subcommands`, rather than `subcommand` 96 97## [4.1.2] - 2023-01-23 98 99### Fixes 100 101- In documentation, refer to `get_flag`, rather than `get_one::<bool>` 102 103## [4.1.1] - 2023-01-14 104 105### Fixes 106 107- *(error)* Small softening attempt for "unexpected argument" error 108 109## [4.1.0] - 2023-01-13 110 111### Compatibility 112 113MSRV changed to 1.64.0 114 115For apps with custom `--help` and `--version` flags: 116- Descriptions for `--help` and `--version` changed 117 118When apps have errors imitating clap's error style: 119- Error message style was changed, including 120 - Moving away from "did you mean" to tips 121 - Leading letter is lower case 122 - "For more" added some punctuation 123 124### Features 125 126- `ArgMatches::get_occurrences` support for argument values to be grouped by their occurrence 127 128### Fixes 129 130- *(derive)* Allow `upgrade_from` when arguments / subcommands are explicitly marked as required 131- *(help)* Try be more clearer and succinct with `--help` and `--version` (also helps with overflow) 132- *(error)* Try to be more clearer and succinct with error messages 133- *(error)* Officially adopt [an error style guide](https://rustc-dev-guide.rust-lang.org/diagnostics.html#suggestion-style-guide) 134 135## [4.0.32] - 2022-12-22 136 137### Fixes 138 139- *(parser)* When overriding `required(true)`, consider args that conflict with its group 140 141## [4.0.31] - 2022-12-22 142 143### Performance 144 145- Speed up parsing when a lot of different flags are present (100 unique flags) 146 147## [4.0.30] - 2022-12-21 148 149### Fixes 150 151- *(error)* Improve error for `args_conflicts_with_subcommand` 152 153## [4.0.29] - 2022-11-29 154 155## [4.0.28] - 2022-11-29 156 157### Fixes 158 159- Fix wasm support which was broken in 4.0.27 160 161## [4.0.27] - 2022-11-24 162 163### Features 164 165- Have `Arg::value_parser` accept `Vec<impl Into<PossibleValue>>` 166- Implement `Display` and `FromStr` for `ColorChoice` 167 168### Fixes 169 170- Remove soundness issue by switching from `atty` to `is-terminal` 171 172## [4.0.26] - 2022-11-16 173 174### Fixes 175 176- *(error)* Fix typos in `ContextKind::as_str` 177 178## [4.0.25] - 2022-11-15 179 180### Features 181 182- *(error)* Report available subcommands when required subcommand is missing 183 184## [4.0.24] - 2022-11-14 185 186### Fixes 187 188- Avoid panic when printing an argument that isn't built 189 190## [4.0.23] - 2022-11-11 191 192### Fixes 193 194- Don't panic on reporting invalid-long errors when followed by invalid UTF8 195- *(help)* Clarified argument to `help` subcommand 196 197## [4.0.22] - 2022-11-07 198 199### Fixes 200 201- *(help)* Don't overflow into next-line-help early due to stale (pre-v4) padding calculations 202 203## [4.0.21] - 2022-11-07 204 205### Features 206 207- *(derive)* `long_about` and `long_help` attributes, without a value, force using doc comment (before it wouldn't be set if there wasn't anything different than the short help) 208 209## [4.0.20] - 2022-11-07 210 211### Fixes 212 213- *(derive)* Allow defaulted value parser for '()' fields 214 215## [4.0.19] - 2022-11-04 216 217### Features 218 219- `ColorChoice` now implements `ValueEnum` 220 221## [4.0.18] - 2022-10-20 222 223### Fixes 224 225- *(derive)* Allow `#[command(skip)]` to also work with enum variants with a value 226 227## [4.0.17] - 2022-10-18 228 229### Fixes 230 231- Allow using `Arg::last(true)` with `Arg::value_hint(ValueHint::CommandWithArguments)` 232 233## [4.0.16] - 2022-10-18 234 235### Fixes 236 237- `Arg::exclusive(true)` should not be exclusive with the argument's own `ArgGroup` 238 239## [4.0.15] - 2022-10-13 240 241### Fixes 242 243- *(error)* Don't suggest `--` when it doesn't help 244- *(error)* Be more consistent in quoting, punctuation, and indentation in errors 245 246## [4.0.14] - 2022-10-12 247 248### Fixes 249 250- Only put `ArgGroup` in `ArgMatches` when explicitly specified, fixing derives handling of option-flattened fields (#4375) 251 252## [4.0.13] - 2022-10-11 253 254### Features 255 256- *(derive)* Allow `()` for fields to mean "don't read" (#4371) 257 258## [4.0.12] - 2022-10-10 259 260### Features 261 262- Added `TypedValueParser::try_map` for when adapting an existing `TypedValueParser` can fail 263- *(error)* Create errors like clap with `Error::new`, `Error::with_cmd`, and `Error::insert` 264 265## [4.0.11] - 2022-10-09 266 267### Fixes 268 269- *(help)* Fix wrapping calculations with ANSI escape codes 270 271## [4.0.10] - 2022-10-05 272 273### Features 274 275- *(derive)* Support `#[arg(flatten)]` on `Option` types (#4211, #4350) 276 277## [4.0.9] - 2022-10-03 278 279### Fixes 280 281- *(derive)* Process doc comments for `#[command(subcommand)]` like in clap v3 282 283## [4.0.8] - 2022-10-01 284 285### Fixes 286 287- *(derive)* Remove a low-value assert preventing defaulting `Help` and `Version` actions 288 289## [4.0.7] - 2022-09-30 290 291### Features 292 293- *(derive)* Populate implicit ArgGroup (#3165) 294 295### Fixes 296 297- *(derive)* Support `#[group(skip)]` on `Parser` derive 298- *(derive)* Tell users about implicit arg groups when running into group name conflicts 299- *(error)* Don't report unrelated groups in conflict or requires errors 300 301## [4.0.6] - 2022-09-30 302 303### Features 304 305- *(derive)* Support `#[group(skip)]` (#4279, #4301) 306 307## [4.0.5] - 2022-09-30 308 309## [4.0.4] - 2022-09-29 310 311### Fixes 312 313- *(error)* Specialize the self-conflict error to look like clap v3 314 315## [4.0.3] - 2022-09-29 316 317### Fixes 318 319- *(error)* Quote literals consistently 320- *(error)* Stylize escape (`--`) suggestions 321- *(error)* Format help flag as a literal 322 323## [4.0.2] - 2022-09-28 324 325### Fixes 326 327- *(parser)* `SetFalse` should conflict with itself like `SetTrue` and `Set` 328- *(parser)* Allow one-off overrides 329 330## [4.0.1] - 2022-09-28 331 332### Fixes 333 334- *(derive)* Ensure `#[clap(...)]` attribute still works 335 336## [4.0.0] - 2022-09-28 337 338### Highlights 339 340**`Arg::num_args(range)`** 341 342Clap has had several ways for controlling how many values will be captured without always being clear on how they interacted, including 343- `Arg::multiple_values(true)` 344- `Arg::number_of_values(4)` 345- `Arg::min_values(2)` 346- `Arg::max_values(20)` 347- `Arg::takes_value(true)` 348 349These have now all been collapsed into `Arg::num_args` which accepts both 350single values and ranges of values. `num_args` controls how many raw arguments 351on the command line will be captured as values per occurrence and independent 352of value delimiters. 353 354See [Issue 2688](https://github.com/clap-rs/clap/issues/2688) for more background. 355 356**Polishing Help** 357 358Clap strives to give a polished CLI experience out of the box with little 359ceremony. With some feedback that has accumulated over time, we took this 360release as an opportunity to re-evaluate our `--help` output to make sure it is 361meeting that goal. 362 363In doing this evaluation, we wanted to keep in mind: 364- Whether other CLIs had ideas that make sense to apply 365- Providing an experience that fits within the rest of applications and works across all shells 366 367Before: 368``` 369git 370A fictional versioning CLI 371 372USAGE: 373 git <SUBCOMMAND> 374 375OPTIONS: 376 -h, --help Print help information 377 378SUBCOMMANDS: 379 add adds things 380 clone Clones repos 381 help Print this message or the help of the given subcommand(s) 382 push pushes things 383 stash 384``` 385 386After: 387``` 388A fictional versioning CLI 389 390Usage: git <COMMAND> 391 392Commands: 393 clone Clones repos 394 push pushes things 395 add adds things 396 stash 397 help Print this message or the help of the given subcommand(s) 398 399Options: 400 -h, --help Print help information 401``` 402- name/version header was removed because we couldn't justify the space it occupied when 403 - Usage already includes the name 404 - `--version` is available for showing the same thing (if the program has a version set) 405- Usage was dropped to one line to save space 406- Focus is put on the subcommands 407- Headings are now Title case 408- The more general term "command" is used rather than being explicit about being "subcommands" 409- The output is more dense with the expectation that it won't affect legibility but will allow more content 410- We've moved to a more neutral palette for highlighting elements (not highlighted above) 411 412In talking to users, we found some that liked clap's `man`-like experience. 413When deviating from this, we are making the assumption that those are more 414power users and that the majority of users wouldn't look as favorably on being 415consistent with `man`. 416 417See [Issue 4132](https://github.com/clap-rs/clap/issues/4132) for more background. 418 419**More Dynamicism** 420 421Clap's API has focused on `&str` for performance but this can make 422dealing with owned data difficult, like `#[arg(default_value_t)]` generating a 423String from the default value. 424 425Additionally, to avoid `ArgMatches` from borrowing (and for some features we 426decided to forgo), clap took the `&str` argument IDs and hashed them. This 427prevented us from providing a usable API for iterating over existing arguments. 428 429Now clap has switched to a string newtype that gives us the flexibility to 430decide whether to use `&'static str`, `Cow<'static, str>` for fast dynamic behavior, or 431`Box<str>` for dynamic behavior with small binary size. 432 433As an extension of that work, you can now call `ArgMatches::ids` to iterate 434over the arguments and groups that were found when parsing. The newtype `Id` 435was used to prevent some classes of bugs and to make it easier to understand 436when opaque Ids are used vs user-visible strings. 437 438**Clearing Out Deprecations** 439 440Instead of doing all development on clap 4.0.0, we implemented a lot of new features during clap 3's development, deprecating the old API while introducing the new API, including: 441- Replacing the implicit behavior for args when parsing them with `ArgAction` 442- Replacing various one-off forms of value validation with the `ValueParser` API 443 - Allowing derives to automatically do the right thing for `PathBuf` (allowing invalid UTF-8) 444- Replacing `AppSettings` and `ArgSettings` enums with getters/setters 445- Clarifying terms and making them more consistent 446 447### Migrating 448 449Steps: 450 4510. [Upgrade to v3](https://github.com/clap-rs/clap/blob/v3-master/CHANGELOG.md#migrating) if you haven't already 4521. Add CLI tests (including example below), `-h` and `--help` output at a minimum (recommendation: [trycmd](https://docs.rs/trycmd/) for snapshot testing) 4532. *If using Builder API*: Explicitly set the `arg.action(ArgAction::...)` on each argument (`StoreValue` for options and `IncOccurrences` for flags) 4543. Run `cargo check --features clap/deprecated` and resolve all deprecation warnings 4554. Upgrade to v4 4565. Update feature flags 457 - *If `default-features = false`*, run `cargo add clap -F help,usage,error-context` 458 - Run `cargo add clap -F wrap_help` unless you want to hard code line wraps 4596. Resolve compiler errors 4607. Resolve behavior changes (see "subtle changes" under BREAKING CHANGES) 4618. *At your leisure:* resolve new deprecation notices 462 463Example test (derive): 464```rust 465#[derive(clap::Parser)] 466struct Cli { 467 ... 468} 469 470#[test] 471fn verify_cli() { 472 use clap::CommandFactory; 473 Cli::command().debug_assert() 474} 475``` 476 477Example test (builder): 478```rust 479fn cli() -> clap::Command { 480 ... 481} 482 483#[test] 484fn verify_cli() { 485 cli().debug_assert(); 486} 487``` 488 489Note: the idiomatic / recommended way of specifying different types of args in the Builder API has changed: 490 491Before 492```rust 493.arg(Arg::new("flag").long("flag")) # --flag 494.arg(Arg::new("option").long("option").takes_value(true)) # --option <option> 495``` 496After: 497```rust 498.arg(Arg::new("flag").long("flag").action(ArgAction::SetTrue)) # --flag 499.arg(Arg::new("option").long("option")) # --option <option> 500``` 501In particular, `num_args` (the replacement for `takes_value`) will default appropriately 502from the `ArgAction` and generally only needs to be set explicitly for the 503other `num_args` use cases. 504 505### Breaking Changes 506 507Subtle changes (i.e. compiler won't catch): 508 509- `arg!` now sets one of (#3795): 510 - `ArgAction::SetTrue`, requiring `ArgMatches::get_flag` instead of `ArgMatches::is_present` 511 - `ArgAction::Count`, requiring `ArgMatches::get_count` instead of `ArgMatches::occurrences_of` 512 - `ArgAction::Set`, requiring `ArgMatches::get_one` instead of `ArgMatches::value_of` 513 - `ArgAction::Append`, requiring `ArgMatches::get_many` instead of `ArgMatches::values_of` 514- `ArgAction::Set`, `ArgAction::SetTrue`, and `Arg::Action::SetFalse` now 515 conflict by default to be like `ArgAction::StoreValue` and 516 `ArgAction::IncOccurrences`, requiring `cmd.args_override_self(true)` to override instead (#4261) 517- By default, an `Arg`s default action is `ArgAction::Set`, rather than `ArgAction::IncOccurrence` to reduce confusing magic through consistency (#2687, #4032, see also #3977) 518- `mut_arg` can no longer be used to customize help and version arguments, instead disable them (`Command::disable_help_flag`, `Command::disable_version_flag`) and provide your own (#4056) 519- Removed lifetimes from `Command`, `Arg`, `ArgGroup`, and `PossibleValue`, assuming `'static`. `string` feature flag will enable support for `String`s (#1041, #2150, #4223) 520- `arg!(--flag <value>)` is now optional, instead of required. Add `.required(true)` at the end to restore the original behavior (#4206) 521- Added default feature flags, `help`, `usage` and `error-context`, requiring adding them back in if `default-features = false` (#4236) 522- *(parser)* Always fill in `""` argument for external subcommands to make it easier to distinguish them from built-in commands (#3263) 523- *(parser)* Short flags now have higher precedence than hyphen values with `Arg::allow_hyphen_values`, to be consistent with `Command::allow_hyphen_values` (#4187) 524- *(parser)* `Arg::value_terminator` must be its own argument on the CLI rather than being in a delimited list (#4025) 525- *(help)* Line wrapping of help is now behind the existing `wrap_help` feature flag, either enable it or hard code your wraps (#4258) 526- *(help)* Make `DeriveDisplayOrder` the default and removed the setting. To sort help, set `next_display_order(None)` (#2808) 527- *(help)* Subcommand display order respects `Command::next_display_order` instead of `DeriveDisplayOrder` and using its own initial display order value (#2808) 528- *(help)* Subcommands are now listed before arguments. To get the old behavior, see `Command::help_template` (#4132) 529- *(help)* Help headings are now title cased, making any user-provided help headings inconsistent. To get the old behavior, see `Command::help_template`, `Arg::help_heading`, and `Command::subcommand_help_heading` (#4132) 530- *(help)* "Command" is used as the section heading for subcommands and `COMMAND` for the value name. To get the old behavior, see `Command::subcommand_help_heading` and `Arg::subcommand_value_name` (#4132, #4155) 531- *(help)* Whitespace in help output is now trimmed to ensure consistency regardless of how well a template matches the users needs. (#4132, #4156) 532- *(help)* name/version/author are removed by default from help output. To get the old behavior, see `Command::help_template`. (#4132, #4160) 533- *(help)* Indentation for second-line usage changed. (#4132, #4188) 534- *(env)* Parse `--help` and `--version` like any `ArgAction::SetTrue` flag (#3776) 535- *(derive)* Leave `Arg::id` as `verbatim` casing, requiring updating of string references to other args like in `conflicts_with` or `requires` (#3282) 536- *(derive)* Doc comments for `ValueEnum` variants will now show up in `--help` (#3312) 537- *(derive)* When deriving `Args`, and `ArgGroup` is created using the type's name, reserving it for future use (#2621, #4209) 538- *(derive)* `next_help_heading` can now leak out of a `#[clap(flatten)]`, like all other command settings (#4222) 539 540Easier to catch changes: 541 542- Looking up a group in `ArgMatches` now returns the arg `Id`s, rather than the values to reduce overhead and offer more flexibility. (#4072) 543- Changed `Arg::number_of_values` (average-across-occurrences) to `Arg::num_args` (per-occurrence) (raw CLI args, not parsed values) (#2688, #4023) 544 - `num_args(0)` no longer implies `takes_value(true).multiple_values(true)` (#4023) 545 - `num_args(1)` no longer implies `multiple_values(true)` (#4023) 546 - Does not check default or env values, only what the user explicitly passes in (#4025) 547 - No longer terminates on delimited values (#4025) 548- Replace `Arg::min_values` (across all occurrences) with `Arg::num_args(N..)` (per occurrence) to reduce confusion over different value count APIs (#4023) 549- Replace `Arg::max_values` (across all occurrences) with `Arg::num_args(1..=M)` (per occurrence) to reduce confusion over different value count APIs (#4023) 550- Replace `Arg::multiple_values(true)` with `Arg::num_args(1..)` and `Arg::multiple_values(false)` with `Arg::num_args(0)` to reduce confusion over different value count APIs (#4023) 551- Replace `Arg::takes_value(true)` with `Arg::num_args(1)` and `Arg::takes_value(false)` with `Arg::num_args(0)` to reduce confusion over different value count APIs 552- Remove `Arg::require_value_delimiter`, either users could use `Arg::value_delimiter` or implement a custom parser with `TypedValueParser` as it was mostly to make `multiple_values(true)` act like `multiple_values(false)` and isn't needed anymore (#4026) 553- `Arg::new("help")` and `Arg::new("version")` no longer implicitly disable the 554 built-in flags and be copied to all subcommands, instead disable 555 the built-in flags (`Command::disable_help_flag`, 556 `Command::disable_version_flag`) and mark the custom flags as `global(true)`. (#4056) 557- `Arg::short('h')` no longer implicitly disables the short flag for help, 558 instead disable 559 the built-in flags (`Command::disable_help_flag`, 560 `Command::disable_version_flag`) provide your own `Arg::new("help").long("help").action(ArgAction::Help).global(true)`. (#4056) 561- `ArgAction::SetTrue` and `ArgAction::SetFalse` now prioritize `Arg::default_missing_value` over their standard behavior (#4000) 562- Changed `Arg::requires_ifs` and `Arg::default_value*_ifs*` to taking an `ArgPredicate`, removing ambiguity with `None` when accepting owned and borrowed types (#4084) 563- Removed `PartialEq` and `Eq` from `Command` so we could change external subcommands to use a `ValueParser` (#3990) 564- Various `Arg`, `Command`, and `ArgGroup` calls were switched from accepting `&[]` to `[]` via `IntoIterator` to be more flexible (#4072) 565- `Arg::short_aliases` and other builder functions that took `&[]` need the `&` dropped (#4081) 566- `ErrorKind` and `Result` moved into the `error` module 567- `ErrorKind::EmptyValue` replaced with `ErrorKind::InvalidValue` to remove an unnecessary special case (#3676, #3968) 568- `ErrorKind::UnrecognizedSubcommand` replaced with `ErrorKind::InvalidSubcommand` to remove an unnecessary special case (#3676) 569- Changed the default type of `allow_external_subcommands` from `String` to `OsString` as that is less likely to cause bugs in user applications (#3990) 570- *(help)* `Command::render_usage` now returns a `StyledStr` (#4248) 571- *(derive)* Changed the default for arguments from `parse` to `value_parser`, removing `parse` support (#3827, #3981) 572 - `#[clap(value_parser)]` and `#[clap(action)]` are now redundant 573- *(derive)* `subcommand_required(true).arg_required_else_help(true)` is set instead of `SubcommandRequiredElseHelp` to give more meaningful errors when subcommands are missing and to reduce redundancy (#3280) 574- *(derive)* Remove `arg_enum` attribute in favor of `value_enum` to match the new name (we didn't have support in v3 to mark it deprecated) (#4127) 575- *(parser)* Assert when the CLI looksup an unknown args when external subcommand support is enabled to help catch bugs (#3703) 576- *(assert)* Sometimes `Arg::default_missing_value` didn't require `num_args(0..=N)`, now it does (#4023) 577- *(assert)* Leading dashes in `Arg::long` are no longer allowed (#3691) 578- *(assert)* Disallow more `value_names` than `num_args` (#2695) 579- *(assert)* Always enforce that version is specified when the `ArgAction::Version` is used 580- *(assert)* Add missing `#[track_caller]`s to make it easier to debug asserts 581- *(assert)* Ensure `overrides_with` IDs are valid 582- *(assert)* Ensure no self-`overrides_with` now that Actions replace it 583- *(assert)* Ensure subcommand names are not duplicated 584- *(assert)* Assert on `mut_arg` receiving an invalid arg ID or `mut_subcommand` receiving an invalid command name 585 586### Compatibility 587 588MSRV is now 1.60.0 589 590Deprecated 591- `Arg::use_value_delimiter` in favor of `Arg::value_delimiter` to avoid having multiple ways of doing the same thing 592- `Arg::requires_all` in favor of `Arg::requires_ifs` now that it takes an `ArgPredicate` to avoid having multiple ways of doing the same thing 593- `Arg::number_of_values` in favor of `Arg::num_args` to clarify semantic differences 594- `default_value_os`, `default_values_os`, `default_value_if_os`, and `default_value_ifs_os` as the non `_os` variants now accept either a `str` or an `OsStr` (#4141) 595- `Arg::env_os` in favor of `Arg::env` 596- `Command::dont_collapse_args_in_usage` is now the default (#4151) 597- `Command::trailing_var_arg` in favor of `Arg::trailing_var_arg` to make it clearer which arg it is meant to apply to (#4187) 598- `Command::allow_hyphen_values` in favor of `Arg::allow_hyphen_values` to make it clearer which arg it is meant to apply to (#4187) 599- `Command::allow_negative_numbers` in favor of `Arg::allow_negative_numbers` to make it clearer which arg it is meant to apply to (#4187) 600- *(help)* Deprecated `Command::write_help` and `Command::write_long_help` in favor of `Command::render_help` and `Command::render_long_help` (#4248) 601- *(derive)* `structopt` and `clap` attributes in favor of the more specific `command`, `arg`, and `value` to open the door for [more features](https://github.com/clap-rs/clap/issues/1807) and [clarify relationship to the builder](https://github.com/clap-rs/clap/discussions/4090) (#1807, #4180) 602- *(derive)* `#[clap(value_parser)]` and `#[clap(action)]` defaulted attributes (its the default) (#3976) 603 604Behavior Changes 605- *(help)* With `wrap_help` feature, if the terminal size cannot be determined, `LINES` and `COLUMNS` variables are used (#4186) 606 607### Features 608 609- `Arg::num_args` now accepts ranges, allowing setting both the minimum and maximum number of values per occurrence (#2688, #4023) 610- Allow non-bool `value_parser`s for `ArgAction::SetTrue` / `ArgAction::SetFalse` (#4092) 611- Add `From<&OsStr>`, `From<OsString>`, `From<&str>`, and `From<String>` to `value_parser!` (#4257) 612- Allow resetting most builder methods 613- Can now pass runtime generated data to `Command`, `Arg`, `ArgGroup`, `PossibleValue`, etc without managing lifetimes with the `string` feature flag (#2150, #4223) 614- New default `error-context`, `help` and `usage` feature flags that can be turned off for smaller binaries (#4236) 615- Added `StyledStr::ansi()` to `Display` with ANSI escape codes (#4248) 616- *(error)* `Error::apply` for changing the formatter for dropping binary size (#4111) 617- *(error)* `Error::render`for formatting the error into a `StyledStr` 618- *(help)* Show `PossibleValue::help` in long help (`--help`) (#3312) 619- *(help)* New `{tab}` variable for `Command::help_template` (#4161) 620- *(help)* `Command::render_help` and `Command::render_long_help` for formatting the error into a `StyledStr` (#3873, #4248) 621- *(help)* `Command::render_usage` now returns a `StyledStr` (#4248) 622 623### Fixes 624 625- Verify `required` is not used with conditional required settings (#3660) 626- Replaced `cmd.allow_invalid_for_utf8_external_subcommands` with `cmd.external_subcommand_value_parser` (#3733) 627- `Arg::default_missing_value` now applies per occurrence rather than if a value is missing across all occurrences (#3998) 628- `arg!(--long [value])` to accept `0..=1` per occurrence rather than across all occurrences, making it safe to use with `ArgAction::Append` (#4001) 629- Allow `OsStr`s for `Arg::{required_if_eq,required_if_eq_any,required_if_eq_all}` (#4084) 630- *(help)* With `wrap_help` feature, if the terminal size cannot be determined, `LINES` and `COLUMNS` variables are used (#4186) 631- *(help)* Use `Command::display_name` in the help title rather than `Command::bin_name` 632- *(help)* Show when a flag is `ArgAction::Count` by adding an `...` (#4003) 633- *(help)* Use a more neutral palette for coloring (#4132, #4117) 634- *(help)* Don't rely on ALL CAPS for help headers (#4132, #4123) 635- *(help)* List subcommands first, focusing the emphasis on them (#4132, #4125) 636- *(help)* Do not include global args in `cmd help help` (#4131) 637- *(help)* Use `[positional]` in list when relevant (#4144) 638- *(help)* Show all `[positional]` in usage (#4151) 639- *(help)* Polish up subcommands by referring to them as commands (#4132, #4155) 640- *(help)* Trim extra whitespace to avoid artifacts from different uses of templates (#4132, #4156) 641- *(help)* Hint to the user the difference between `-h` / `--help` when applicable (#4132, #4159) 642- *(help)* Shorten help by eliding name/version/author (#4132, #4160) 643- *(help)* When short help is long enough to activate `next_line_help`, don't add blank lines (#4132, #4190) 644- *(help)* Make help output more dense (reducing horizontal whitespace) (#4132, #4192) 645- *(help)* Separate subcommand flags with "," like option flags (#4232, #4235) 646- *(help)* Quote the suggested help flag (#4220) 647- *(version)* Use `Command::display_name` rather than `Command::bin_name` (#3966) 648- *(parser)* Always fill in `""` argument for external subcommands (#3263) 649- *(parser)* Short flags now have higher precedence than hyphen values with `Arg::allow_hyphen_values`, like `Command::allow_hyphen_values` (#4187) 650- *(parser)* Prefer `InvalidSubcommand` over `UnknownArgument` in more cases (#4219) 651- *(derive)* Detect escaped external subcommands that look like built-in subcommands (#3703) 652- *(derive)* Leave `Arg::id` as `verbatim` casing (#3282) 653- *(derive)* Default to `#[clap(value_parser, action)]` instead of `#[clap(parse)]` (#3827) 654 655## [3.2.18] - 2022-08-29 656 657### Fixes 658 659- *(help)* `Command::print_help` now respects `Command::colored_help` 660- *(derive)* Improved error messages 661 662## [3.2.17] - 2022-08-12 663 664### Fixes 665 666- *(derive)* Expose `#[clap(id = ...)]` attribute to match Arg's latest API 667 668## [3.2.16] - 2022-07-30 669 670### Fixes 671 672- Ensure required arguments appear in errors when they are also members of a group (#4004) 673 674## [3.2.15] - 2022-07-25 675 676### Features 677 678- *(derive)* New `default_values_t` and `default_values_os_t` attributes 679 680## [3.2.14] - 2022-07-21 681 682### Fixes 683 684- A `multiple_values` positional followed by another positional now works with multiple flags 685 686## [3.2.13] - 2022-07-19 687 688### Documentation 689 690- Pulled in tutorials, cookbook, and derive reference into rustdoc 691 692## [3.2.12] - 2022-07-14 693 694### Fixes 695 696- Allow an arg to declare a conflict with a group 697 698## [3.2.11] - 2022-07-13 699 700### Features 701 702- Added `Arg::get_all_short_aliaes` and `Arg::get_all_aliases` 703 704## [3.2.10] - 2022-07-12 705 706### Fixes 707 708- Loosen lifetime on `Command::mut_subcommand` 709 710## [3.2.8] - 2022-06-30 711 712### Features 713 714- Added `Command::mut_subcommand` to mirror `Command::mut_arg` 715 716## [3.2.7] - 2022-06-28 717 718### Fixes 719 720- Global arguments should override env-sourced arguments 721 722## [3.2.6] - 2022-06-21 723 724### Fixes 725 726- Don't panic when parsing `--=` 727 728## [3.2.5] - 2022-06-15 729 730### Fixes 731 732- *(derive)* Fix regression with `#[clap(default_value_os_t ...)]` introduced in v3.2.3 733 734## [3.2.4] - 2022-06-14 735 736### Fixes 737 738- *(derive)* Provide more clearer deprecation messages for `#[clap(parse)]` attribute (#3832) 739 740## [3.2.3] - 2022-06-14 741 742### Fixes 743 744- Moved deprecations to be behind the `deprecated` Cargo.toml feature (#3830) 745 - For now, it is disabled by default though we are considering enabling it by 746 default as we release the next major version to help draw attention to the 747 deprecation migration path 748 749## [3.2.2] - 2022-06-14 750 751### Fixes 752 753- *(derive)* Improve the highlighted code for deprecation warnings 754 755**gated behind `unstable-v4`** 756- *(derive)* Default to `#[clap(value_parser, action)]` instead of `#[clap(parse)]` (#3827) 757 758## [3.2.1] - 2022-06-13 759 760## [3.2.0] - 2022-06-13 761 762### Compatibility 763 764MSRV is now 1.56.0 (#3732) 765 766Behavior 767- Defaults no longer satisfy `required` and its variants (#3793) 768- When misusing `ArgMatches::value_of` and friends, debug asserts were turned into panics 769 770Moving (old location deprecated) 771- `clap::{PossibleValue, ValueHint}` to `clap::builder::{PossibleValue, ValueHint}` 772- `clap::{Indices, OsValues, ValueSource, Values}` to `clap::parser::{Indices, OsValues, ValueSource, Values}` 773- `clap::ArgEnum` to `clap::ValueEnum` (#3799) 774 775Replaced 776- `Arg::allow_invalid_utf8` with `Arg::value_parser(value_parser!(PathBuf))` (#3753) 777- `Arg::validator` / `Arg::validator_os` with `Arg::value_parser` (#3753) 778- `Arg::validator_regex` with users providing their own `builder::TypedValueParser` (#3756) 779- `Arg::forbid_empty_values` with `builder::NonEmptyStringValueParser` / `builder::PathBufValueParser` (#3753) 780- `Arg::possible_values` with `Arg::value_parser([...])`, `builder::PossibleValuesParser`, or `builder::EnumValueParser` (#3753) 781- `Arg::max_occurrences` with `arg.action(ArgAction::Count).value_parser(value_parser!(u8).range(..N))` for flags (#3797) 782- `Arg::multiple_occurrences` with `ArgAction::Append` or `ArgAction::Count` though positionals will need `Arg::multiple_values` (#3772, #3797) 783- `Command::args_override_self` with `ArgAction::Set` (#2627, #3797) 784- `AppSettings::NoAutoVersion` with `ArgAction` or `Command::disable_version_flag` (#3800) 785- `AppSettings::NoHelpVersion` with `ArgAction` or `Command::disable_help_flag` / `Command::disable_help_subcommand` (#3800) 786- `ArgMatches::{value_of, value_of_os, value_of_os_lossy, value_of_t}` with `ArgMatches::{get_one,remove_one}` (#3753) 787- `ArgMatches::{values_of, values_of_os, values_of_os_lossy, values_of_t}` with `ArgMatches::{get_many,remove_many}` (#3753) 788- `ArgMatches::is_valid_arg` with `ArgMatches::{try_get_one,try_get_many}` (#3753) 789- `ArgMatches::occurrences_of` with `ArgMatches::value_source` or `ArgAction::Count` (#3797) 790- `ArgMatches::is_present` with `ArgMatches::contains_id` or `ArgAction::SetTrue` (#3797) 791- `ArgAction::StoreValue` with `ArgAction::Set` or `ArgAction::Append` (#3797) 792- `ArgAction::IncOccurrences` with `ArgAction::SetTrue` or `ArgAction::Count` (#3797) 793- *(derive)* `#[clap(parse(...))]` replaced with: (#3589, #3794) 794 - For default parsers (no `parse` attribute), deprecation warnings can be 795 silenced by opting into the new behavior by adding either `#[clap(action)]` 796 or `#[clap(value_parser)]` (ie requesting the default behavior for these 797 attributes). Alternatively, the `unstable-v4` feature changes the default 798 away from `parse` to `action`/`value_parser`. 799 - For `#[clap(parse(from_flag))]` replaced with `#[clap(action = ArgAction::SetTrue)]` (#3794) 800 - For `#[clap(parse(from_occurrences))]` replaced with `#[clap(action = ArgAction::Count)]` though the field's type must be `u8` (#3794) 801 - For `#[clap(parse(from_os_str)]` for `PathBuf`, replace it with 802 `#[clap(value_parser)]` (as mentioned earlier this will call 803 `value_parser!(PathBuf)` which will auto-select the right `ValueParser` 804 automatically). 805 - For `#[clap(parse(try_from_str = ...)]`, replace it with `#[clap(value_parser = ...)]` 806 - For most other cases, a type implementing `TypedValueParser` will be needed and specify it with `#[clap(value_parser = ...)]` 807 808### Features 809 810- Parsed, typed arguments via `Arg::value_parser` / `ArgMatches::{get_one,get_many}` (#2683, #3732) 811 - Several built-in `TypedValueParser`s available with an API open for expansion 812 - `value_parser!(T)` macro for selecting a parser for a given type (#3732) and open to expansion via the `ValueParserFactory` trait (#3755) 813 - `[&str]` is implicitly a value parser for possible values 814 - All `ArgMatches` getters do not assume required arguments (#2505) 815 - Add `ArgMatches::remove_*` variants to transfer ownership 816 - Add `ArgMatches::try_*` variants to avoid panics for developer errors (#3621) 817 - Add a `get_raw` to access the underlying `OsStr`s 818 - `PathBuf` value parsers imply `ValueHint::AnyPath` for completions (#3732) 819- Explicit control over parsing via `Arg::action` (#3774) 820 - `ArgAction::StoreValue`: existing `takes_value(true)` behavior 821 - `ArgAction::IncOccurrences`: existing `takes_value(false)` behavior 822 - `ArgAction::Help`: existing `--help` behavior 823 - `ArgAction::Version`: existing `--version` behavior 824 - `ArgAction::Set`: Overwrite existing values (like `Arg::multiple_occurrences` mixed with `Command::args_override_self`) (#3777) 825 - `ArgAction::Append`: like `Arg::multiple_occurrences` (#3777) 826 - `ArgAction::SetTrue`: Treat `--flag` as `--flag=true` (#3775) 827 - Implies `Arg::default_value("false")` (#3786) 828 - Parses `Arg::env` via `Arg::value_parser` 829 - `ArgAction::SetFalse`: Treat `--flag` as `--flag=false` (#3775) 830 - Implies `Arg::default_value("true")` (#3786) 831 - Parses `Arg::env` via `Arg::value_parser` 832 - `ArgAction::Count`: Treat `--flag --flag --flag` as `--flag=1 --flag=2 --flag=3` (#3775) 833 - Implies `Arg::default_value("0")` (#3786) 834 - Parses `Arg::env` via `Arg::value_parser` 835- *(derive)* Opt-in to new `Arg::value_parser` / `Arg::action` with either `#[clap(value_parser)]` (#3589, #3742) / `#[clap(action)]` attributes (#3794) 836 - Default `ValueParser` is determined by `value_parser!` (#3199, #3496) 837 - Default `ArgAction` is determine by a hard-coded lookup on the type (#3794) 838- `Command::multicall` is now stable for busybox-like programs and REPLs (#2861, #3684) 839- `ArgMatches::{try_,}contains_id` for checking if there are values for an argument that mirrors the new `get_{one,many}` API 840 841### Fixes 842 843- Don't correct argument id in `default_value_ifs_os`(#3815) 844 845*parser* 846- Set `ArgMatches::value_source` and `ArgMatches::occurrences_of` for external subcommands (#3732) 847- Use value delimiter for `Arg::default_missing_values` (#3761, #3765) 848- Split`Arg::default_value` / `Arg::env` on value delimiters independent of whether `--` was used (#3765) 849- Allow applying defaults to flags (#3294, 3775) 850- Defaults no longer satisfy `required` and its variants (#3793) 851 852## [3.1.18] - 2022-05-10 853 854### Fixes 855 856- Fix deprecated `arg_enum!` for users migrating to clap3 (#3717) 857- Verify all `required_unless_present_all` arguments exist 858- Verify group members exist before processing group members (#3711) 859- *(help)* Use `...` when not enough `value_names` are supplied 860 861**gated behind `unstable-v4`** 862- Verify `required` is not used with conditional required settings (#3660) 863- Disallow more `value_names` than `number_of_values` (#2695) 864- *(parser)* Assert on unknown args when using external subcommands (#3703) 865- *(parser)* Always fill in `""` argument for external subcommands (#3263) 866- *(derive)* Detect escaped external subcommands that look like built-in subcommands (#3703) 867- *(derive)* Leave `Arg::id` as `verbatim` casing (#3282) 868 869## [3.1.17] - 2022-05-06 870 871### Fixes 872 873- Allow value names for `arg!` macro to have dashes when quoted, like longs 874 875## [3.1.16] - 2022-05-06 876 877### Fixes 878 879- *(parser)* `Arg::exclusive` overrides `Arg::required`, like other conflicts 880- *(error)* Don't duplicate arguments in usage 881- *(error)* Don't show hidden arguments in conflict error usage 882- *(help)* New `help_template` variable `{name}` to fix problems with `{bin}` 883- *(help)* Don't wrap URLs 884 885**gated behind `unstable-v4`** 886- Leading dashes in `Arg::long` are no longer allowed 887- *(help)* Use `Command::display_name` in the help title rather than `Command::bin_name` 888 889## [3.1.15] - 2022-05-02 890 891### Fixes 892 893- *(error)* Render actual usage for unrecognized subcommands 894- *(multicall)* Improve bad command error 895- *(multicall)* Always require a multicall command 896- *(multicall)* Disallow arguments on multicall parent command 897- *(multicall)* More consistent with rest of clap errors 898 899 900## [3.1.14] - 2022-05-01 901 902### Fixes 903 904- Panic when calling `Command::build` with a required positional argument nested several layers in subcommands 905 906## [3.1.13] - 2022-04-30 907 908### Fixes 909 910- Help subcommand and `Command::write_help` now report required arguments in usage in more circumstances 911- Unknown subcommand for help subcommand flag now reports an error with more context 912- More details reported when using `debug` feature 913- Allow disabling `color` feature with `debug` feature enabled 914 915## [3.1.12] - 2022-04-22 916 917### Fixes 918 919- Regression in 3.1.11 where the (output) streams were crossed 920 921## [3.1.11] - 2022-04-22 922 923### Fixes 924 925- Implied conflicts override `Arg::required`, making the behavior consistent with how we calculate conflicts for error reporting 926- Members of a mutually exclusive `ArgGroup` override `Arg::required`, making the behavior consistent with how we calculate conflicts for error reporting 927- `Arg::overrides_with` always override `Arg::required`, not just when the parser processes an override 928 929## [3.1.10] - 2022-04-19 930 931### Features 932 933- Expose `Command::build` for custom help generation or other command introspection needs 934 935## [3.1.9] - 2022-04-15 936 937### Fixes 938 939- Pin the `clap_derive` version so a compatible version is always used with `clap` 940 941## [3.1.8] - 2022-04-01 942 943### Fixes 944 945- Add `Debug` impls to more types 946 947## [3.1.7] - 2022-03-31 948 949### Fixes 950 951- *(derive)* Abort, rather than ignore, when deriving `ArgEnum` with non-unit unskipped variants 952 953## [3.1.6] - 2022-03-07 954 955### Fixes 956 957- Don't panic when validating delimited defaults (#3541) 958- Make it clearer that `cargo` feature is needed 959- Documentation improvements 960 961## [3.1.5] - 2022-03-02 962 963### Fixes 964 965- Dependency upgrade 966 967## [3.1.4] - 2022-03-02 968 969### Features 970 971- *(help)* Show `PossibleValue::help` in long help (`--help`) **(gated behind `unstable-v4`)** (#3312) 972 973## [3.1.3] - 2022-02-28 974 975### Fixes 976 977- Don't panic when validating delimited defaults (#3514) 978 979## [3.1.2] - 2022-02-23 980 981### Fixes 982 983- *(derive)* Allow other attribute with a subcommand that has subcommands 984 985### Documentation 986 987- *(examples)* List example topics 988- *(derive)* Clarify syntax and relation to builder API 989 990## [3.1.1] - 2022-02-21 991 992### Fixes 993 994- Track caller for `ArgMatches` assertions so the user more easily sees where they need to fix the call 995 996## [3.1.0] - 2022-02-16 997 998### Compatibility 999 1000Changes in behavior of note that are not guaranteed to be compatible across releases: 1001 1002- *(help)* `help` subcommand shows long help like `--help`, rather than short help (`-h`), deprecated `clap::AppSettings::UseLongFormatForHelpSubcommand` (#3440) 1003- *(help)* Pacman-style subcommands are now ordered the same as usage errors (#3470) 1004- *(help)* Pacman-style subcommands use standard alternate syntax in usage (#3470) 1005 1006### Deprecations 1007 1008- `clap::Command` is now preferred over `clap::App` (#3089 in #3472) 1009 - `clap::command!` is now preferred over `clap::app_from_crate` (#3089 in #3474) 1010 - `clap::CommandFactory::command` is now preferred over `clap::IntoApp::into_app` (#3089 in #3473) 1011- *(help)* `help` subcommand shows long help like `--help`, rather than short help (`-h`), deprecated `clap::AppSettings::UseLongFormatForHelpSubcommand` (#3440) 1012- *(error)* Deprecate `clap::AppSettings::WaitOnError`, leaving it to the user to implement 1013- *(validation)* `clap::Command::subcommand_required(true).arg_required_else_help(true)` is now preferred over `clap::AppSettings::SubcommandRequiredElseHelp` (#3280) 1014- *(builder)* `clap::AppSettings` are nearly all deprecated and replaced with builder methods and getters (#2717) 1015- *(builder)* `clap::ArgSettings` is deprecated and replaced with builder methods and getters (#2717) 1016- *(builder)* `clap::Arg::id` and `clap::ArgGroup::id` are now preferred over `clap::Arg::name` and `clap::ArgGroup::name` (#3335) 1017- *(help)* `clap::Command::next_help_heading` is now preferred over `clap::Command::help_heading` (#1807, #1553) 1018- *(error)* `clap::error::ErrorKind` is now preferred over `clap::ErrorKind` (#3395) 1019- *(error)* `clap::Error::kind()` is now preferred over `clap::Error::kind` 1020- *(error)* `clap::Error::context()` is now preferred over `clap::Error::info` (#2628) 1021 1022Note: All items deprecated in 3.0.0 are now hidden in the documentation. (#3458) 1023 1024### Features 1025 1026- *(matches)* Add `clap::ArgMatches::value_source` to determine what insert the value (#1345) 1027- *(help)* Override derived display order with `clap::Command::next_display_order` (#1807) 1028- *(error)* Show possible values when an argument doesn't have a value (#3320) 1029- *(error)* New `clap::Error::context` API to open the door for fully-custom error messages (#2628) 1030 - *(error)* `clap::error::ErrorKind` now implements `Display` 1031 1032### Fixes 1033 1034- *(builder)* Some functions were renamed for consistency and fixing spelling issues 1035- *(builder)* Allow `clap::Command::color` to override previous calls (#3449) 1036- *(parse)* Propagate globals with multiple subcommands (#3428) 1037- *(validation)* Give `ArgRequiredElseHelp` precedence over `SubcommandRequired` (#3456) 1038- *(validation)* Default values no longer count as "present" for conflicts, requires, `clap::Command::arg_required_else_help`, etc (#3076, #1264) 1039- *(assert)* Report invalid defaults (#3202) 1040- *(help)* Clarify how to handle `-h` conflicts (#3403) 1041- *(help)* Make it easier to debug the addition of help flags (#3425) 1042- *(help)* Pacman-style subcommands are now separated with spaces (#3470) 1043- *(help)* Pacman-style subcommands are now ordered the same as usage errors (#3470) 1044- *(help)* Pacman-style subcommands use standard alternate syntax in usage (#3470) 1045- *(error)* Be consistent in showing of required attributes between errors / usage (#3390) 1046- *(error)* Show user's order of possible values, like in `--help` (#1549) 1047- *(error)* Allow customizing error type in `clap::error::Result` (#3395) 1048 1049### Performance 1050 1051- *(error)* Reduced stack size of `clap::Error` (#3395) 1052 1053### Documentation 1054 1055- *(builder)* Correct data take accepted for `clap::Arg::validator` 1056- *(derive)* Clarify `parse` attribute 1057- *(tutorial)* Demonstrate custom parsing 1058- *(example)* Consistently list out required feature flags (#3448) 1059 1060## [3.0.14] - 2022-02-01 1061 1062### Features 1063 1064- Added `ArgMatches::args_present()` to check if any args are present 1065- Added `Error::kind()` as we work to deprecate direct member access for `Error` 1066- Added `App::get_version` 1067- Added `App::get_long_version` 1068- Added `App::get_author` 1069- Added `App::get_subcommand_help_heading` 1070- Added `App::get_subcommand_value_name` 1071- Added `App::get_after_help` 1072- Added `App::get_after_long_help` 1073 1074### Performance 1075 1076- Misc binary size reductions 1077 1078## [3.0.13] - 2022-01-26 1079 1080### Fixes 1081 1082- Show optional flag values wrapped in `[]` 1083 1084## [3.0.12] - 2022-01-24 1085 1086### Features 1087 1088- *(derive)* Support for `default_value_os_t` 1089 1090## [3.0.11] - 2022-01-24 1091 1092### Fixes 1093 1094- Ensure conflicts work when they target a group with a default value 1095 1096## [3.0.10] - 2022-01-18 1097 1098### Fixes 1099 1100- Resolve `panic!` from v3.0.8 when using `global_setting(PropagateVersion)`. 1101 1102## [3.0.9] - 2022-01-17 1103 1104### Features 1105 1106- Added `App::find_subcommand_mut` 1107 1108## [3.0.8] - 2022-01-17 1109 1110### Fixes 1111 1112- Respected `DisableColoredHelp` on `cmd help help` 1113- Provide a little more context when completing arguments for `cmd help` 1114- Provide more context for some asserts 1115- Small documentation improvements 1116 1117## [3.0.7] - 2022-01-12 1118 1119### Fixes 1120 1121- Shift more asserts from parsing to `App` building (ie will now run in `App::debug_assert`) 1122 1123**derive** 1124- Documentation fixes 1125 1126## [3.0.6] - 2022-01-10 1127 1128### Fixes 1129 1130**derive** 1131- Don't assume user does `use clap::ArgEnum` (#3277) 1132- Documentation fixes 1133 1134## [3.0.5] - 2022-01-05 1135 1136### Fixes 1137 1138- Provide hack to workaround [inability to detect external subcommands aliasing when escaped](https://github.com/clap-rs/clap/issues/3263) (#3264) 1139 1140**docs:** 1141- Cleaned up code blocks in tutorials (#3261) 1142- Clean up quotes in `ArgMatches` asserts 1143- List correct replacement for deprecated `Parser::from_clap` (#3257) 1144 1145## [3.0.4] - 2022-01-04 1146 1147### Features 1148 1149- For very limited cases, like `cargo`, expose `ArgMatches::is_valid_arg` to avoid panicing on undefined arguments 1150 1151## [3.0.3] - 2022-01-04 1152 1153### Fixes 1154 1155- Specify cause of debug assert failure 1156 1157## [3.0.2] - 2022-01-04 1158 1159### Fixes 1160 1161- Ignore `Last` when checking hyphen values (see #3249 for details) 1162- Help catch bugs with `#[must_use]` 1163 1164## [3.0.1] - 2022-01-03 1165 1166### Fixes 1167 1168- Don't panic when getting number of values (#3241) 1169- Don't warn when using `default_value_t` derive attribute with a `Subcommand` (#3245) 1170 1171Documentation 1172- Added `name` attribute to `ArgEnum` variant derive reference 1173 1174## [3.0.0] - 2021-12-31 1175 1176**Note:** clap v3 has been in development for several years and has changed 1177hands multiple times. Unfortunately, our changelog might be incomplete, 1178whether in changes or their motivation. 1179 1180### Highlights 1181 1182A special thanks to the maintainers, contributors, beta users, and sponsors who 1183have helped along this journey, especially kbknapp. 1184 1185**[StructOpt](https://docs.rs/structopt/) Integration** 1186 1187[StructOpt](https://docs.rs/structopt/) provides a serde-like declarative 1188approach to defining your parser. The main benefits we've seen so far from integrating are: 1189- Tighter feedback between the design of clap and the derives 1190- More universal traits. Crates exist for common CLI patterns 1191 ([example](https://github.com/rust-cli/clap-verbosity-flag)) 1192 and we've re-designed the `StructOpt` traits so crates built on clap3 can be 1193 reused not just with other derives but also people using the builder API. 1194 People can even hand implement these so people using the builder API won't 1195 have the pay the cost for derives. 1196 1197**Custom Help Headings** 1198 1199Previously, clap automatically grouped arguments in the help as either 1200`ARGS`, `FLAGS`, `OPTIONS`, and `SUBCOMMANDS`. 1201 1202You can now override the default group with `Arg::help_heading` and 1203`App::subcommand_help_heading`. To apply a heading to a series of arguments, 1204you can set `App::help_heading`. 1205 1206**Deprecations** 1207 1208While a lot of deprecations have been added to clean up the API (overloaded 1209meaning of `Arg::multiple`) or make things more consistent, some particular 1210highlights are: 1211- `clap_app!` has been deprecated in favor of the builder API with `arg!` ([clap-rs/clap#2835](https://github.com/clap-rs/clap/issues/2835)) 1212- `Arg::from_usage` has been deprecated in favor of `arg!` ([clap-rs/clap#3087](https://github.com/clap-rs/clap/issues/3087)) 1213 - [Porting example](https://github.com/clap-rs/clap/commit/4c4a2b86a08ef9e2d63010aab4909dd5a013dfb0) 1214- The YAML API has been deprecated in favor the builder or derive APIs ([clap-rs/clap#3087](https://github.com/clap-rs/clap/issues/3087)) 1215 1216### Migrating 1217 1218**From clap v2** 1219 12201. Add CLI tests, `-h` and `--help` output at a minimum (recommendation: [trycmd](https://docs.rs/trycmd/) for snapshot testing) 12212. Update your dependency 1222 1. *If you use `no-default-features`:* add the `std` feature 12233. Resolve compiler errors 12244. Resolve behavior changes 1225 1. Refactor your `App` creation to a function and add a test similar to the one below, resolving any of its assertions 1226 2. Look over the "subtle changes" under BREAKING CHANGES 1227 3. *If using builder:* test your application under various circumstances to see if `ArgMatches` asserts regarding `AllowInvalidUtf8`. 12285. *At your leisure:* resolve deprecation notices 1229 1230Example test: 1231```rust 1232fn app() -> clap::App<'static> { 1233 ... 1234} 1235 1236#[test] 1237fn verify_app() { 1238 app().debug_assert(); 1239} 1240``` 1241 1242**From structopt 0.3.25** 1243<a name="migrate-structopt"></a> 1244 12451. Add CLI tests, `-h` and `--help` output at a minimum (recommendation: [trycmd](https://docs.rs/trycmd/) for snapshot testing) 12462. Replace your dependency from `structopt = "..."` to `clap = { version = "3.0", features = ["derive"] }` 1247 1. *If you use `no-default-features`:* add the `std` feature 12483. Resolve compiler errors, including 1249 1. Update your `use` statements from `structopt` and `structopt::clap` to `clap` 12504. Resolve behavior changes 1251 1. Add a test similar to the one below, resolving any of its assertions 1252 2. Look over the "subtle changes" under BREAKING CHANGES 12535. *At your leisure:* resolve deprecation notices 1254 1255Example test: 1256```rust 1257#[derive(clap::StructOpt)] 1258struct Args { 1259 ... 1260} 1261 1262#[test] 1263fn verify_app() { 1264 use clap::IntoApp; 1265 Args::into_app().debug_assert() 1266} 1267``` 1268 1269**From clap v3.0.0-beta.5** 1270 12711. Add CLI tests, `-h` and `--help` output at a minimum (recommendation: [trycmd](https://docs.rs/trycmd/) for snapshot testing) 12722. Update your dependency 1273 1. Add in `derive`, `env`, `cargo`, or `unicode` feature flags as needed 12743. Resolve compiler errors 1275 1. *If you use `yaml`, `clap_app!`, or usage parser:* revert any changes you made for clap3 1276 2. Change `Arg::about` `Arg::long_about` back to `help` and `long_help` and change `PossibleValue::about` to `help` ([clap-rs/clap#3075](https://github.com/clap-rs/clap/issues/3075)) 1277 3. Change `AppSettings::HelpRequired` to `AppSettings::HelpExpected` 1278 4. Change `PossibleValue::hidden` to `PossibleValue::hide` 1279 5. Change `App::subcommand_placeholder` to `App::subcommand_value_name` / `App::subcommand_help_heading` 12804. Resolve behavior changes 1281 1. Add the above listed test appropriate for your application and resolve any problems it reports 1282 2. *If using `derive`:* see the structopt breaking changes section for `Vec` changes 1283 3. *If using builder:* test your application under various circumstances to see if `ArgMatches` asserts regarding `AllowInvalidUtf8`. 12845. *At your leisure:* resolve deprecation notices 1285 1286### BREAKING CHANGES 1287 1288**From clap 2** 1289 1290Subtle changes (i.e. compiler won't catch): 1291- `AppSettings::UnifiedHelpMessage` is now default behaviour 1292 - `{flags}` and `{unified}` will assert if present in `App::help_template` 1293 - See [clap-rs/clap#2807](https://github.com/clap-rs/clap/issues/2807) 1294- `AppSettings::EnableColoredHelp` is now the default behavior but can be 1295 opted-out with `AppSettings::DisableColoredHelp` 1296 ([clap-rs/clap#2806](https://github.com/clap-rs/clap/issues/2806)) 1297- `App::override_usage` no longer implies a leading `\t`, allowing multi lined usages 1298- `Arg::require_equals` no longer implies `ArgSettings::ForbidEmptyValues` ([#2233](https://github.com/clap-rs/clap/issues/2233)) 1299- `Arg::require_delimiter` no longer implies `ArgSettings::TakesValue` and `ArgSettings::UseValueDelimiter` ([#2233](https://github.com/clap-rs/clap/issues/2233)) 1300- `Arg::env`, `Arg::env_os`, `Arg::last`, `Arg::require_equals`, `Arg::allow_hyphen_values`, 1301 `Arg::hide_possible_values`, `Arg::hide_default_value`, `Arg::hide_env_values`, 1302 `Arg::case_insensitive` and `Arg::multiple_values` no longer imply `ArgSettings::TakesValue` ([#2233](https://github.com/clap-rs/clap/issues/2233)) 1303- `ArgMatches::is_present` no longer checks subcommand names 1304- Some env variable values are now considered false for flags, not just "not-present" ([clap-rs/clap#2539](https://github.com/clap-rs/clap/issues/2539)) 1305- Changed `...`s meaning in usage parser. Before, it always meant `multiple` which is still true for `--option [val]...`. Now `[name]... --option [val]` results in `ArgSettings::MultipleOccurrences`. 1306- Usage exit code changed from `1` to `2` ([clap-rs/clap#1327](https://github.com/clap-rs/clap/issues/1327)) 1307- Reject `--foo=bar` when `takes_value(false)` ([clap-rs/clap#1543](https://github.com/clap-rs/clap/issues/1543)) 1308- No longer accept an arbitrary number of `-` for long arguments (`-----long`) 1309 1310Easier to catch changes: 1311- When using `no-default-features`, you now have to specify the `std` feature (reserved for future work) 1312- Gated env support behind `env` feature flag 1313 - Impacts `Arg::env`, `Arg::env_os`, `Arg::hide_env_values`, `ArgSettings::HideEnvValues` 1314 - See [clap-rs/clap#2694](https://github.com/clap-rs/clap/pull/2694) 1315- Gated crate information behind `cargo` feature flag 1316 - Impacts `crate_name!`, `crate_version!`, `crate_authors!`, `crate_description!`, `app_from_crate!` 1317- `AppSettings::StrictUtf8` is now default behaviour and asserts if 1318 `AppSettings::AllowInvalidUtf8ForExternalSubcommands` and 1319 `ArgSettings::AllowInvalidUtf8` and `ArgMatches::value_of_os` aren't used 1320 together 1321 - `AppSettings::AllowInvalidUtf8` has been removed 1322 - [clap-rs/clap#751](https://github.com/clap-rs/clap/issues/751) 1323- `Arg::short` and `Arg::value_delimiter` now take a `char` instead of a `&str` 1324- `ArgMatches` panics on unknown arguments 1325- Removed `VersionlessSubcommands`, making it the default (see [clap-rs/clap#2812](https://github.com/clap-rs/clap/issues/2812)) 1326- Completion generation has been split out into [clap_complete](./clap_complete). 1327- Removed `ArgSettings::EmptyValues` in favor of `ArgSettings::ForbidEmptyValues` 1328- Validator signatures have been loosed: 1329 - `Arg::validator` now takes first argument as `Fn(&str) -> Result<O, E: ToString>` instead of 1330 `Fn(String) -> Result<(), String>` 1331 - `Arg::validator_os` now takes first argument as `Fn(&OsStr) -> Result<O, OsString>` instead of 1332 `Fn(&OsStr) -> Result<(), OsString>` 1333- `Arg::value_name` now sets, rather than appends (see [clap-rs/clap#2634](https://github.com/clap-rs/clap/issues/2634)) 1334- Upgrade `yaml-rust` from 0.3 to 0.4 1335- Replaced `ArgGroup::from(BTreeMap)` to `ArgGroup::from(yaml)` 1336- Replaced `ArgMatches::usage` with `App::generate_usage` 1337- Replaced `Arg::settings` with `Arg::setting(Setting1 | Setting2)` 1338- `App` and `Arg` now need only one lifetime 1339- Removed deprecated `App::with_defaults`, replaced with `app_from_crate` 1340- Removed deprecated `AppSettings::PropagateGlobalValuesDown` (now the default) 1341- Some `App` functions, like `App::write_help` now take `&mut self` instead of `&self` 1342- `Error::message` is now private, use `Error::to_string` 1343- `Arg::default_value_if`, `Arg::default_value_if_os`, `Arg::default_value_ifs`, 1344 `Arg::default_value_ifs_os` now takes the default value parameter as an option ([clap-rs/clap#1406](https://github.com/clap-rs/clap/issues/1406)) 1345- Changed `App::print_help` & `App::print_long_help` to now return `std::io::Result` 1346- Changed `App::write_help` & `App::write_long_help` to now return `std::io::Result` 1347- Changed `Arg::index`, `Arg::number_of_values`, `Arg::min_values`, `Arg::max_values` to taking `usize` instead of u64 1348- Changed `Error::info` to type `Vec<String>` instead of `Option<Vec<String>>` 1349- Changed `ArgMatches::subcommand` to now return `Option<(&str, &ArgMatches)>` 1350- Renamed `ErrorKind::MissingArgumentOrSubcommand` to `ErrorKind::DisplayHelpOnMissingArgumentOrSubcommand` 1351- Renamed `ErrorKind::HelpDisplayed` to `ErrorKind::DisplayHelp` 1352- Renamed `ErrorKind::VersionDisplayed` to `ErrorKind::DisplayVersion` 1353- Added `#[non_exhaustive]` to `clap::{ValueHint, ErrorKind, AppSettings, ArgSettings}` ([clap-rs/clap#3167](https://github.com/clap-rs/clap/pull/3167)) 1354 1355**From structopt 0.3.25** 1356 1357- By default, the `App` isn't initialized with crate information anymore. Now opt-in via `#[clap(author)]`, `#[clap(about)]`, `#[clap(version)]` ([clap-rs/clap#3034](https://github.com/clap-rs/clap/issues/3034)) 1358- `#[clap(default_value)]` is replaced with `#[clap(default_value_t)]` ([clap-rs/clap#1694](https://github.com/clap-rs/clap/issues/1694)) 1359- Subcommands nested under subcommands now needs a `#[clap(subcommand)]` attribute ([clap-rs/clap#2587](https://github.com/clap-rs/clap/pull/2587)) 1360- `Vec<_>` and `Option<Vec<_>>` have changed from `multiple` to `multiple_occurrences` 1361 1362On top of the clap 2 changes 1363 1364### Performance 1365 1366**From clap 2** 1367 1368- Split out non-default `unicode` feature flag for faster builds and smaller binaries for ASCII-only CLIs. 1369- Split out non-default `env` feature flag for faster builds and smaller binaries. 1370 1371### Features 1372 1373**From clap 2** 1374 1375- Integration of `structopt::StructOpt` via `clap::Parser` (requires `derive` feature flag) 1376- Custom help headings 1377 - `App::help_heading` (apply to all future args) 1378 - `Arg::help_heading` (apply to current arg) 1379 - `App::subcommand_help_heading` along with `App::subcommand_value_name` (apply to subcommands) 1380 - See [clap-rs/clap#805](https://github.com/clap-rs/clap/issues/805) 1381 - `AppSettings::UnifiedHelpMessage` is now default behaviour ([clap-rs/clap#2807](https://github.com/clap-rs/clap/issues/2807)) 1382- Deriving of `ArgEnum` for generating `Arg::possible_values` (requires `derive` feature flag) 1383- Disable built-in help/version behavior with `AppSettings::NoAutoHelp` and `AppSettings::NoAutoVersion` 1384- Change an existing arg with new builder method `mut_arg` (particularly helpful for `--help` and `--version`) 1385- Provide extra context in long help messages (`--help`) with `before_long_help` and `after_long_help` ([clap-rs/clap#1903](https://github.com/clap-rs/clap/issues/1903)) 1386- Detect missing help descriptions via debug asserts by enabling `AppSettings::HelpExpected` 1387- Aliases for short flags ([clap-rs/clap#1896](https://github.com/clap-rs/clap/issues/1896)) 1388- Validate UTF-8 values, rather than panicing during `ArgMatches::value_of` thanks to `AppSettings::AllowInvalidUtf8ForExternalSubcommands` and `ArgSettings::AllowInvalidUtf8` 1389 - Debug builds will assert when the `ArgMatches` calls do not match the UTF-8 setting. 1390 - See [clap-rs/clap#751](https://github.com/clap-rs/clap/issues/751) 1391- `clap::PossibleValue` to allow 1392 - Hiding ([clap-rs/clap#2756](https://github.com/clap-rs/clap/issues/2756)) 1393 - Completion help for possible values for args ([clap-rs/clap#2731](https://github.com/clap-rs/clap/issues/2731)) 1394- Allow arguments to conflict with all others via `Arg::exclusive` ([clap-rs/clap#1583](https://github.com/clap-rs/clap/issues/1583)) 1395- Validate arguments with a regex (required `regex` feature flag) 1396 - See [clap-rs/clap](https://github.com/clap-rs/clap/issues/1968) 1397- `Arg::default_missing_value` for cases like `--color[=<WHEN>]` ([clap-rs/clap#1587](https://github.com/clap-rs/clap/pull/1587)) 1398- `clap::App::color` / `clap::ColorChoice` to specify color setting for the app 1399- Custom error reporting with `App::error` 1400- `App::debug_assert` test helper 1401- Replace `Arg::multiple(bool)` with `Arg::multiple_values` / `Arg::multiple_occurrences` 1402 - Positionals can be either 1403- Added support for flag subcommands like pacman ([clap-rs/clap#1361](https://github.com/clap-rs/clap/issues/1361)) 1404- Partial parsing via `AppSettings::IgnoreErrors` ([clap-rs/clap#1880](https://github.com/clap-rs/clap/issues/1880)) 1405- Enable `cmd help` to print long help (`--help` instead of `-h`) with `AppSettings::UseLongFormatForHelpSubcommand` ([clap-rs/clap#2435](https://github.com/clap-rs/clap/issues/2435)) 1406- Allow long arg abbreviations like we do with subcommands via `AppSettings::InferLongArgs` ([clap-rs/clap#2435](https://github.com/clap-rs/clap/issues/2435)) 1407- Detect subcommands among positional arguments with `AppSettings::SubcommandPrecedenceOverArg` 1408- Give completion scripts hints with `Arg::value_hint` ([clap-rs/clap#1793](https://github.com/clap-rs/clap/pull/1793)) 1409- Allow unsetting defaults with 1410- `Arg::default_value_if`, `Arg::default_value_if_os`, `Arg::default_value_ifs`, 1411 `Arg::default_value_ifs_os` ([clap-rs/clap#1406](https://github.com/clap-rs/clap/issues/1406)) 1412- Interpret some env variable values as `false` for flags, in addition to "not-present" ([clap-rs/clap#2539](https://github.com/clap-rs/clap/issues/2539)) 1413 - `n`, `no`, `f`, `false`, `off`, `0` 1414- Added `arg!` macro for creating an `Arg` from a compile-time usage parser 1415 1416- *(Experimental)* Busybox-like multi-call support 1417 - See `AppSettings::Multicall` behind `unstable-multicall` feature flag 1418 - See [clap-rs/clap#1120](https://github.com/clap-rs/clap/issues/1120) 1419- *(Experimental)* Alias an argument to anything group of arguments 1420 - See `App::replace` behind `unstable-replace` feature flag 1421 - See [clap-rs#1603](https://github.com/clap-rs/clap/issues/1603) 1422- *(Experimental)* Grouping of multiple values within multiple occurrences 1423 - See `ArgMatches::grouped_values_of` behind `unstable-grouped` feature flag 1424 - See [clap-rs/clap#1026](https://github.com/clap-rs/clap/issues/1026) 1425 1426**From structopt 0.3.25** 1427 1428- Allow defaulting with native types via new `default_value_t [= <expr>]` attribute ([clap-rs/clap#1694](https://github.com/clap-rs/clap/issues/1694)) 1429- New `update` API 1430- New `arg_enum` attribute for integrating with `ArgEnum` trait 1431 1432On top of the clap 2 changes 1433 1434### Fixes 1435 1436**From clap 2** 1437 1438- Correctly handle colored output on Windows 1439- Only generate version flags when `App::version`, `App::long_version` are set 1440 (see [clap-rs/clap#2812](https://github.com/clap-rs/clap/issues/2812)) 1441- General completion script improvements 1442- Limited default help text wrapping to 100 when `wrap_help` feature is not enabled 1443- Be more specific than `Arg::multiple` with `Arg::multiple_values` and `Arg::multiple_occurrences` 1444- `app_from_crate!` defaults to separating multiple authors with `", "` 1445- Ensure all examples work 1446- `IgnoreCase` is now unicode aware (requires `unicode` feature flag) 1447- Always respect `ColorChoice::Never`, even if that means we skip colors in some cases 1448- `ArgMatches` panics on unknown arguments 1449- Gracefully handle empty `authors` field in `Cargo.toml` with `app_from_crate` 1450- Do not show `--help` in `cmd help` with `DisableHelpFlag` ([clap-rs/clap#3169](https://github.com/clap-rs/clap/pull/3169)) 1451- Do not show `--help` in `cmd help help` that doesn't work ([clap-rs/clap#3169](https://github.com/clap-rs/clap/pull/3169)) 1452 1453**From structopt 0.3.25** 1454 1455- Support `SubcommandsNegateReqs` by allowing required `Option<_>`s ([clap-rs/clap#2255](https://github.com/clap-rs/clap/issues/2255)) 1456- Infer `AllowInvalidUtf8` based on parser ([clap-rs/clap#751](https://github.com/clap-rs/clap/issues/2255)) 1457- Gracefully handle empty `authors` field in `Cargo.toml` 1458- Don't panic with `default_value_os` but treat it like `default_value` ([clap-rs/clap#3031](https://github.com/clap-rs/clap/issues/3031)) 1459- When using `flatten` and `subcommand`, ensure our doc comment always overrides the nested container's doc comment, whether it has only `about` or `about` and `long_about` ([clap-rs/clap#3175](]https://github.com/clap-rs/clap/pull/3175)) 1460 1461On top of the clap 2 changes 1462 1463### Minimum Required Rust 1464 1465- As of this release, `clap` requires `rustc 1.54.0` or greater. 1466 1467## [2.34.0] - 2021-11-30 1468 1469- Updates to Rust 2018 edition and bumps the MSRV to Rust 1.46 1470 1471## [2.33.4] - 2021-11-29 1472 1473### Bug Fixes 1474 1475* **prevents `panic`:** swallows broken pipe errors on error output ([7a729bc4](https://github.com/kbknapp/clap-rs/commit/7a729bc4df2646b05f6bf15f001124cd39d076ce)) 1476 1477## [2.33.3] - 2020-08-13 1478 1479### Improvements 1480 1481* Suppress deprecation warnings when using `crate_*` macros. 1482 1483## [2.33.2] - 2020-08-5 1484 1485#### Documentation 1486 1487* Fixed links to `2.x` examples. Now they point to the right place. 1488 1489## [2.33.1] - 2020-05-11 1490 1491### Bug Fixes 1492 1493* Windows: Prevent some panics when parsing invalid Unicode on Windows ([922c645](https://github.com/clap-rs/clap/commit/922c64508389170c9c77f1c8a4e597d14d3ed2f0), closes [#1905](https://github.com/clap-rs/clap/issues/1905)) 1494 1495### Documentation 1496 1497* fixes versions referenced in the README ([d307466a](https://github.com/kbknapp/clap-rs/commit/d307466af1013f172b8ec0252f01a473e2192d6b)) 1498* **README.md:** 1499 * cuts down the number of examples to reduce confusion ([6e508ee0](https://github.com/kbknapp/clap-rs/commit/6e508ee09e7153de4adf4e88b0aa6418a537dadd)) 1500 1501### Improvements 1502 1503* **Deps:** doesnt compile ansi_term on Windows since its not used ([b57ee946](https://github.com/kbknapp/clap-rs/commit/b57ee94609da3ddc897286cfba968f26ff961491), closes [#1155](https://github.com/kbknapp/clap-rs/issues/1155)) 1504 1505### Minimum Required Rust 1506 1507* As of this release, `clap` requires `rustc 1.36.0` or greater. 1508 1509## [2.33.0] - 2019-04-06 1510 1511#### New Sponsor 1512 1513* Stephen Oats is now a sponsor \o/ ([823457c0](https://github.com/clap-rs/clap/commit/823457c0ef5e994ed7080cf62addbfe1aa3b1833)) 1514* **SPONSORS.md:** fixes Josh Triplett's info in the sponsor document ([24cb5740](https://github.com/clap-rs/clap/commit/24cb574090a11159b48bba105d5ec2dfb0a20e4e)) 1515 1516#### Features 1517 1518* **Completions:** adds completion support for Elvish. ([e9d0562a](https://github.com/clap-rs/clap/commit/e9d0562a1dc5dfe731ed7c767e6cee0af08f0cf9)) 1519* There is a new setting to disable automatic building of `--help` and `-h` flags (`AppSettings::DisableAutoHelp`) 1520 1521#### Improvements 1522 1523* **arg_matches.rs:** add Debug implementations ([47192b7a](https://github.com/clap-rs/clap/commit/47192b7a2d84ec716b81ae4af621e008a8762dc9)) 1524* **macros:** Support shorthand syntax for ArgGroups ([df9095e7](https://github.com/clap-rs/clap/commit/df9095e75bb1e7896415251d0d4ffd8a0ebcd559)) 1525 1526#### Documentation 1527 1528* Refer to macOS rather than OSX. ([ab0d767f](https://github.com/clap-rs/clap/commit/ab0d767f3a5a57e2bbb97d0183c2ef63c8c77a6c)) 1529* **README.md:** use https for all links ([96a7639a](https://github.com/clap-rs/clap/commit/96a7639a36bcb184c3f45348986883115ef1ab3a)) 1530 1531#### Bug Fixes 1532 1533* add debug assertion for missing args in subcommand ArgGroup ([2699d9e5](https://github.com/clap-rs/clap/commit/2699d9e51e7eadc258ba64c4e347c5d1fef61343)) 1534* Restore compat with Rust 1.21 ([6b263de1](https://github.com/clap-rs/clap/commit/6b263de1d42ede692ec5ee55019ad2fc6386f92e)) 1535* Don't mention unused subcommands ([ef92e2b6](https://github.com/clap-rs/clap/commit/ef92e2b639ed305bdade4741f60fa85cb0101c5a)) 1536* **OsValues:** Add `ExactSizeIterator` implementation ([356c69e5](https://github.com/clap-rs/clap/commit/356c69e508fd25a9f0ea2d27bf80ae1d9a8d88f4)) 1537* **arg_enum!:** 1538 * Fix comma position for valid values. ([1f1f9ff3](https://github.com/clap-rs/clap/commit/1f1f9ff3fa38a43231ef8be9cfea89a32e53f518)) 1539 * Invalid expansions of some trailing-comma patterns ([7023184f](https://github.com/clap-rs/clap/commit/7023184fca04e852c270341548d6a16207d13862)) 1540* **completions:** improve correctness of completions when whitespace is involved ([5a08ff29](https://github.com/clap-rs/clap/commit/5a08ff295b2aa6ce29420df6252a0e3ff4441bdc)) 1541* **help message:** Unconditionally uses long description for subcommands ([6acc8b6a](https://github.com/clap-rs/clap/commit/6acc8b6a621a765cbf513450188000d943676a30), closes [#897](https://github.com/clap-rs/clap/issues/897)) 1542* **macros:** fixes broken pattern which prevented calling multi-argument Arg methods ([9e7a352e](https://github.com/clap-rs/clap/commit/9e7a352e13aaf8025d80f2bac5c47fb32528672b)) 1543* **parser:** Better interaction between AllowExternalSubcommands and SubcommandRequired ([9601c95a](https://github.com/clap-rs/clap/commit/9601c95a03d2b82bf265c328b4769238f1b79002)) 1544 1545#### Minimum Required Rust 1546 1547* As of this release, `clap` requires `rustc 1.31.0` or greater. 1548 1549## v2.32.0 (2018-06-26) 1550 1551#### Minimum Required Rust 1552 1553* As of this release, `clap` requires `rustc 1.21.0` or greater. 1554 1555 1556#### Features 1557 1558* **Completions:** adds completion support for Elvish. ([e9d0562a](https://github.com/clap-rs/clap/commit/e9d0562a1dc5dfe731ed7c767e6cee0af08f0cf9)) 1559 1560#### Improvements 1561 1562* **macros:** Support shorthand syntax for ArgGroups ([df9095e7](https://github.com/clap-rs/clap/commit/df9095e75bb1e7896415251d0d4ffd8a0ebcd559)) 1563 1564#### Bug Fixes 1565 1566* **OsValues:** Add `ExactSizeIterator` implementation ([356c69e5](https://github.com/clap-rs/clap/commit/356c69e508fd25a9f0ea2d27bf80ae1d9a8d88f4)) 1567* **arg_enum!:** Invalid expansions of some trailing-comma patterns ([7023184f](https://github.com/clap-rs/clap/commit/7023184fca04e852c270341548d6a16207d13862)) 1568* **help message:** Unconditionally uses long description for subcommands ([6acc8b6a](https://github.com/clap-rs/clap/commit/6acc8b6a621a765cbf513450188000d943676a30), closes [#897](https://github.com/clap-rs/clap/issues/897)) 1569 1570#### Documentation 1571 1572* Refer to macOS rather than OSX. ([ab0d767f](https://github.com/clap-rs/clap/commit/ab0d767f3a5a57e2bbb97d0183c2ef63c8c77a6c)) 1573 1574 1575 1576## v2.31.2 (2018-03-19) 1577 1578#### Bug Fixes 1579 1580* **Fish Completions:** fixes a bug that only allowed a single completion in in Fish Shell ([e8774a8](https://github.com/clap-rs/clap/pull/1214/commits/e8774a84ee4a319c888036e7c595ab46451d8e48), closes [#1212](https://github.com/clap-rs/clap/issues/1212)) 1581* **AllowExternalSubcommands**: fixes a bug where external subcommands would be blocked by a similarly named subcommand (suggestions were getting in the way). ([a410e85](https://github.com/clap-rs/clap/pull/1215/commits/a410e855bcd82b05f9efa73fa8b9774dc8842c6b)) 1582 1583#### Documentation 1584 1585* Fixes some typos in the `README.md` ([c8e685d7](https://github.com/clap-rs/clap/commit/c8e685d76adee2a3cc06cac6952ffcf6f9548089)) 1586 1587## v2.31.1 (2018-03-06) 1588 1589 1590#### Improvements 1591 1592* **AllowMissingPositional:** improves the ability of AllowMissingPositional to allow 'skipping' to the last positional arg with '--' ([df20e6e2](https://github.com/clap-rs/clap/commit/df20e6e24b4e782be0b423b484b9798e3e2efe2f)) 1593 1594 1595## v2.31.0 (2018-03-04) 1596 1597 1598#### Features 1599 1600* **Arg Indices:** adds the ability to query argument value indices ([f58d0576](https://github.com/clap-rs/clap/commit/f58d05767ec8133c8eb2de117cb642b9ae29ccbc)) 1601* **Indices:** implements an Indices<Item=&usize> iterator ([1e67be44](https://github.com/clap-rs/clap/commit/1e67be44f0ccf161cc84c4e6082382072e89c302)) 1602* **Raw Args** adds a convenience function to `Arg` that allows implying all of `Arg::last` `Arg::allow_hyphen_values` and `Arg::multiple(true)` ([66a78f29](https://github.com/clap-rs/clap/commit/66a78f2972786f5fe7c07937a1ac23da2542afd2)) 1603 1604#### Documentation 1605 1606* Fix some typos and markdown issues. ([935ba0dd](https://github.com/clap-rs/clap/commit/935ba0dd547a69c3f636c5486795012019408794)) 1607* **Arg Indices:** adds the documentation for the arg index querying methods ([50bc0047](https://github.com/clap-rs/clap/commit/50bc00477afa64dc6cdc5de161d3de3ba1d105a7)) 1608* **CONTRIBUTING.md:** fix url to clippy upstream repo to point to https://github.com/rust-lang-nursery/rust-clippy instead of https://github.com/Manishearth/rust-clippy ([42407d7f](https://github.com/clap-rs/clap/commit/42407d7f21d794103cda61f49d2615aae0a4bcd9)) 1609* **Values:** improves the docs example of the Values iterator ([74075d65](https://github.com/clap-rs/clap/commit/74075d65e8db1ddb5e2a4558009a5729d749d1b6)) 1610* Updates readme to hint that the `wrap_help` feature is a thing ([fc7ab227](https://github.com/clap-rs/clap/commit/66a78f2972786f5fe7c07937a1ac23da2542afd2)) 1611 1612### Improvements 1613 1614* Cargo.toml: use codegen-units = 1 in release and bench profiles ([19f425ea](https://github.com/clap-rs/clap/commit/66a78f2972786f5fe7c07937a1ac23da2542afd2)) 1615* Adds WASM support (clap now compiles on WASM!) ([689949e5](https://github.com/clap-rs/clap/commit/689949e57d390bb61bc69f3ed91f60a2105738d0)) 1616* Uses the short help tool-tip for PowerShell completion scripts ([ecda22ce](https://github.com/clap-rs/clap/commit/ecda22ce7210ce56d7b2d1a5445dd1b8a2959656)) 1617 1618 1619## v2.30.0 (2018-02-13) 1620 1621#### Bug Fixes 1622 1623* **YAML:** Adds a missing conversion from `Arg::last` when instantiating from a YAML file ([aab77c81a5](https://github.com/clap-rs/clap/pull/1175/commits/aab77c81a519b045f95946ae0dd3e850f9b93070), closes [#1160](https://github.com/clap-rs/clap/issues/1173)) 1624 1625#### Improvements 1626 1627* **Bash Completions:** instead of completing a generic option name, all bash completions fall back to file completions UNLESS `Arg::possible_values` was used ([872f02ae](https://github.com/clap-rs/clap/commit/872f02aea900ffa376850a279eb164645e1234fa)) 1628* **Deps:** No longer needlessly compiles `ansi_term` on Windows since its not used ([b57ee946](https://github.com/clap-rs/clap/commit/b57ee94609da3ddc897286cfba968f26ff961491), closes [#1155](https://github.com/clap-rs/clap/issues/1155)) 1629* **Help Message:** changes the `[values: foo bar baz]` array to `[possible values: foo bar baz]` for consistency with the API ([414707e4e97](https://github.com/clap-rs/clap/pull/1176/commits/414707e4e979d07bfe555247e5d130c546673708), closes [#1160](https://github.com/clap-rs/clap/issues/1160)) 1630 1631 1632## v2.29.4 (2018-02-06) 1633 1634 1635#### Bug Fixes 1636 1637* **Overrides Self:** fixes a bug where options with multiple values couldn't ever have multiple values ([d95907cf](https://github.com/clap-rs/clap/commit/d95907cff6d011a901fe35fa00b0f4e18547a1fb)) 1638 1639 1640 1641## v2.29.3 (2018-02-05) 1642 1643 1644#### Improvements 1645 1646* **Overrides:** clap now supports arguments which override with themselves ([6c7a0010](https://github.com/clap-rs/clap/commit/6c7a001023ca1eac1cc6ffe6c936b4c4a2aa3c45), closes [#976](https://github.com/clap-rs/clap/issues/976)) 1647 1648#### Bug Fixes 1649 1650* **Requirements:** fixes an issue where conflicting args would still show up as required ([e06cefac](https://github.com/clap-rs/clap/commit/e06cefac97083838c0a4e1444dcad02a5c3f911e), closes [#1158](https://github.com/clap-rs/clap/issues/1158)) 1651* Fixes a bug which disallows proper nesting of `--` ([73993fe](https://github.com/clap-rs/clap/commit/73993fe30d135f682e763ec93dcb0814ed518011), closes [#1161](https://github.com/clap-rs/clap/issues/1161)) 1652 1653#### New Settings 1654 1655* **AllArgsOverrideSelf:** adds a new convenience setting to allow all args to override themselves ([4670325d](https://github.com/clap-rs/clap/commit/4670325d1bf0369addec2ae2bcb56f1be054c924)) 1656 1657 1658 1659## v2.29.2 (2018-01-16) 1660 1661 1662#### Features 1663 1664* **completions/zsh.rs:** 1665 * Escape possible values for options ([25561dec](https://github.com/clap-rs/clap/commit/25561decf147d329b64634a14d9695673c2fc78f)) 1666 * Implement positional argument possible values completion ([f3b0afd2](https://github.com/clap-rs/clap/commit/f3b0afd2bef8b7be97162f8a7802ddf7603dff36)) 1667 * Complete positional arguments properly ([e39aeab8](https://github.com/clap-rs/clap/commit/e39aeab8487596046fbdbc6a226e5c8820585245)) 1668 1669#### Bug Fixes 1670 1671* **completions/zsh.rs:** 1672 * Add missing autoload for is-at-least ([a6522607](https://github.com/clap-rs/clap/commit/a652260795d1519f6ec2a7a09ccc1258499cad7b)) 1673 * Don't pass -S to _arguments if Zsh is too old ([16b4f143](https://github.com/clap-rs/clap/commit/16b4f143ff466b7ef18a267bc44ade0f9639109b)) 1674 * Maybe fix completions with mixed positionals and subcommands ([1146f0da](https://github.com/clap-rs/clap/commit/1146f0da154d6796fbfcb09db8efa3593cb0d898)) 1675* **completions/zsh.zsh:** Remove redundant code from output ([0e185b92](https://github.com/clap-rs/clap/commit/0e185b922ed1e0fd653de00b4cd8d567d72ff68e), closes [#1142](https://github.com/clap-rs/clap/issues/1142)) 1676 1677 1678 1679### 2.29.1 (2018-01-09) 1680 1681 1682#### Documentation 1683 1684* fixes broken links. ([56e734b8](https://github.com/clap-rs/clap/commit/56e734b839303d733d2e5baf7dac39bd7b97b8e4)) 1685* updates contributors list ([e1313a5a](https://github.com/clap-rs/clap/commit/e1313a5a0f69d8f4016f73b860a63af8318a6676)) 1686 1687#### Performance 1688 1689* further debloating by removing generics from error cases ([eb8d919e](https://github.com/clap-rs/clap/commit/eb8d919e6f3443db279ba0c902f15d76676c02dc)) 1690* debloats clap by deduplicating logic and refactors ([03e413d7](https://github.com/clap-rs/clap/commit/03e413d7175d35827cd7d8908d47dbae15a849a3)) 1691 1692#### Bug Fixes 1693 1694* fixes the ripgrep benchmark by adding a value to a flag that expects it ([d26ab2b9](https://github.com/clap-rs/clap/commit/d26ab2b97cf9c0ea675b440b7b0eaf6ac3ad01f4)) 1695* **bash completion:** Change the bash completion script code generation to support hyphens. ([ba7f1d18](https://github.com/clap-rs/clap/commit/ba7f1d18eba7a07ce7f57e0981986f66c994b639)) 1696* **completions/zsh.rs:** Fix completion of long option values ([46365cf8](https://github.com/clap-rs/clap/commit/46365cf8be5331ba04c895eb183e2f230b5aad51)) 1697 1698 1699## 2.29.0 (2017-12-02) 1700 1701 1702#### API Additions 1703 1704* **Arg:** adds Arg::hide_env_values(bool) which allows one to hide any current env values and display only the key in help messages ([fb41d062](https://github.com/clap-rs/clap/commit/fb41d062eedf37cb4f805c90adca29909bd197d7)) 1705 1706 1707 1708## 2.28.0 (2017-11-28) 1709 1710The minimum required Rust is now 1.20. This was done to start using bitflags 1.0 and having >1.0 deps is a *very good* thing! 1711 1712#### Documentation 1713 1714* changes the demo version to 2.28 to stay in sync ([ce6ca492](https://github.com/clap-rs/clap/commit/ce6ca492c7510ab6474075806360b96081b021a9)) 1715* Fix URL path to github hosted files ([ce72aada](https://github.com/clap-rs/clap/commit/ce72aada56a9581d4a6cb4bf9bdb861c3906f8df), closes [#1106](https://github.com/clap-rs/clap/issues/1106)) 1716* fix typo ([002b07fc](https://github.com/clap-rs/clap/commit/002b07fc98a1c85acb66296b1eec0b2aba906125)) 1717* **README.md:** updates the readme and pulls out some redundant sections ([db6caf86](https://github.com/clap-rs/clap/commit/db6caf8663747e679d2f4ed3bd127f33476754aa)) 1718 1719#### Improvements 1720 1721* adds '[SUBCOMMAND]' to usage strings with only AppSettings::AllowExternalSubcommands is used with no other subcommands ([e78bb757](https://github.com/clap-rs/clap/commit/e78bb757a3df16e82d539e450c06767a6bfcf859), closes [#1093](https://github.com/clap-rs/clap/issues/1093)) 1722 1723#### API Additions 1724 1725* Adds Arg::case_insensitive(bool) which allows matching Arg::possible_values without worrying about ASCII case ([1fec268e](https://github.com/clap-rs/clap/commit/1fec268e51736602e38e67c76266f439e2e0ef12), closes [#1118](https://github.com/clap-rs/clap/issues/1118)) 1726* Adds the traits to be used with the clap-derive crate to be able to use Custom Derive ([6f4c3412](https://github.com/clap-rs/clap/commit/6f4c3412415e882f5ca2cc3fbd6d4dce79440828)) 1727 1728#### Bug Fixes 1729 1730* Fixes a regression where --help couldn't be overridden ([a283d69f](https://github.com/clap-rs/clap/commit/a283d69fc08aa016ae1bf9ba010012abecc7ba69), closes [#1112](https://github.com/clap-rs/clap/issues/1112)) 1731* fixes a bug that allowed options to pass parsing when no value was provided ([2fb75821](https://github.com/clap-rs/clap/commit/2fb758219c7a60d639da67692e100b855a8165ac), closes [#1105](https://github.com/clap-rs/clap/issues/1105)) 1732* ignore PropagateGlobalValuesDown deprecation warning ([f61ce3f5](https://github.com/clap-rs/clap/commit/f61ce3f55fe65e16b3db0bd4facdc4575de22767), closes [#1086](https://github.com/clap-rs/clap/issues/1086)) 1733 1734#### Deps 1735 1736* Updates `bitflags` to 1.0 1737 1738 1739 1740## v2.27.1 (2017-10-24) 1741 1742 1743#### Bug Fixes 1744 1745* Adds `term_size` as an optional dependency (with feature `wrap_help`) to fix compile bug 1746 1747## v2.27.0 (2017-10-24) 1748 1749** This release raises the minimum required version of Rust to 1.18 ** 1750 1751** This release also contains a very minor breaking change to fix a bug ** 1752 1753The only CLIs affected will be those using unrestrained multiple values and subcommands where the 1754subcommand name can coincide with one of the multiple values. 1755 1756See the commit [0c223f54](https://github.com/clap-rs/clap/commit/0c223f54ed46da406bc8b43a5806e0b227863b31) for full details. 1757 1758 1759#### Bug Fixes 1760 1761* Values from global args are now propagated UP and DOWN! 1762* fixes a bug where using AppSettings::AllowHyphenValues would allow invalid arguments even when there is no way for them to be valid ([77ed4684](https://github.com/clap-rs/clap/commit/77ed46841fc0263d7aa32fcc5cc49ef703b37c04), closes [#1066](https://github.com/clap-rs/clap/issues/1066)) 1763* when an argument requires a value and that value happens to match a subcommand name, its parsed as a value ([0c223f54](https://github.com/clap-rs/clap/commit/0c223f54ed46da406bc8b43a5806e0b227863b31), closes [#1031](https://github.com/clap-rs/clap/issues/1031), breaks [#](https://github.com/clap-rs/clap/issues/), [#](https://github.com/clap-rs/clap/issues/)) 1764* fixes a bug that prevented number_of_values and default_values to be used together ([5eb342a9](https://github.com/clap-rs/clap/commit/5eb342a99dde07b0f011048efde3e283bc1110fc), closes [#1050](https://github.com/clap-rs/clap/issues/1050), [#1056](https://github.com/clap-rs/clap/issues/1056)) 1765* fixes a bug that didn't allow args with default values to have conflicts ([58b5b4be](https://github.com/clap-rs/clap/commit/58b5b4be315280888d50d9b15119b91a9028f050), closes [#1071](https://github.com/clap-rs/clap/issues/1071)) 1766* fixes a panic when using global args and calling App::get_matches_from_safe_borrow multiple times ([d86ec797](https://github.com/clap-rs/clap/commit/d86ec79742c77eb3f663fb30e225954515cf25bb), closes [#1076](https://github.com/clap-rs/clap/issues/1076)) 1767* fixes issues and potential regressions with global args values not being propagated properly or at all ([a43f9dd4](https://github.com/clap-rs/clap/commit/a43f9dd4aaf1864dd14a3c28dec89ccdd70c61e5), closes [#1010](https://github.com/clap-rs/clap/issues/1010), [#1061](https://github.com/clap-rs/clap/issues/1061), [#978](https://github.com/clap-rs/clap/issues/978)) 1768* fixes a bug where default values are not applied if the option supports zero values ([9c248cbf](https://github.com/clap-rs/clap/commit/9c248cbf7d8a825119bc387c23e9a1d1989682b0), closes [#1047](https://github.com/clap-rs/clap/issues/1047)) 1769 1770#### Documentation 1771 1772* adds additional blurbs about using multiples with subcommands ([03455b77](https://github.com/clap-rs/clap/commit/03455b7751a757e7b2f6ffaf2d16168539c99661)) 1773* updates the docs to reflect changes to global args and that global args values can now be propagated back up the stack ([ead076f0](https://github.com/clap-rs/clap/commit/ead076f03ada4c322bf3e34203925561ec496d87)) 1774* add html_root_url attribute ([e67a061b](https://github.com/clap-rs/clap/commit/e67a061bcf567c6518d6c2f58852e01f02764b22)) 1775* sync README version numbers with crate version ([5536361b](https://github.com/clap-rs/clap/commit/5536361bcda29887ed86bb68e43d0b603cbc423f)) 1776 1777#### Improvements 1778 1779* args that have require_delimiter(true) is now reflected in help and usage strings ([dce61699](https://github.com/clap-rs/clap/commit/dce616998ed9bd95e8ed3bec1f09a4883da47b85), closes [#1052](https://github.com/clap-rs/clap/issues/1052)) 1780* if all subcommands are hidden, the subcommands section of the help message is no longer displayed ([4ae7b046](https://github.com/clap-rs/clap/commit/4ae7b0464750bc07ec80ece38e43f003fdd1b8ae), closes [#1046](https://github.com/clap-rs/clap/issues/1046)) 1781 1782#### Breaking Changes 1783 1784* when an argument requires a value and that value happens to match a subcommand name, its parsed as a value ([0c223f54](https://github.com/clap-rs/clap/commit/0c223f54ed46da406bc8b43a5806e0b227863b31), closes [#1031](https://github.com/clap-rs/clap/issues/1031), breaks [#](https://github.com/clap-rs/clap/issues/), [#](https://github.com/clap-rs/clap/issues/)) 1785 1786#### Deprecations 1787 1788* **AppSettings::PropagateGlobalValuesDown:** this setting is no longer required to propagate values down or up ([2bb5ddce](https://github.com/clap-rs/clap/commit/2bb5ddcee61c791ca1aaca494fbeb4bd5e277488)) 1789 1790 1791 1792## v2.26.2 (2017-09-14) 1793 1794 1795#### Improvements 1796 1797* if all subcommands are hidden, the subcommands section of the help message is no longer displayed ([4ae7b046](https://github.com/clap-rs/clap/commit/4ae7b0464750bc07ec80ece38e43f003fdd1b8ae), closes [#1046](https://github.com/clap-rs/clap/issues/1046)) 1798 1799#### Bug Fixes 1800 1801* fixes a bug where default values are not applied if the option supports zero values ([9c248cbf](https://github.com/clap-rs/clap/commit/9c248cbf7d8a825119bc387c23e9a1d1989682b0), closes [#1047](https://github.com/clap-rs/clap/issues/1047)) 1802 1803 1804 1805## v2.26.1 (2017-09-14) 1806 1807 1808#### Bug Fixes 1809 1810* fixes using require_equals(true) and min_values(0) together ([10ae208f](https://github.com/clap-rs/clap/commit/10ae208f68518eff6e98166724065745f4083174), closes [#1044](https://github.com/clap-rs/clap/issues/1044)) 1811* escape special characters in zsh and fish completions ([87e019fc](https://github.com/clap-rs/clap/commit/87e019fc84ba6193a8c4ddc26c61eb99efffcd25)) 1812* avoid panic generating default help msg if term width set to 0 due to bug in textwrap 0.7.0 ([b3eadb0d](https://github.com/clap-rs/clap/commit/b3eadb0de516106db4e08f078ad32e8f6d6e7a57)) 1813* Change `who's` -> `whose` ([53c1ffe8](https://github.com/clap-rs/clap/commit/53c1ffe87f38b05d8804a0f7832412a952845349)) 1814* adds a debug assertion to ensure all args added to groups actually exist ([7ad123e2](https://github.com/clap-rs/clap/commit/7ad123e2c02577e3ca30f7e205181e896b157d11), closes [#917](https://github.com/clap-rs/clap/issues/917)) 1815* fixes a bug where args that allow values to start with a hyphen couldn't contain a double hyphen -- as a value ([ab2f4c9e](https://github.com/clap-rs/clap/commit/ab2f4c9e563e36ec739a4b55d5a5b76fdb9e9fa4), closes [#960](https://github.com/clap-rs/clap/issues/960)) 1816* fixes a bug where positional argument help text is misaligned ([54c16836](https://github.com/clap-rs/clap/commit/54c16836dea4651806a2cfad53146a83fa3abf21)) 1817* **Help Message:** fixes long_about not being usable ([a8257ea0](https://github.com/clap-rs/clap/commit/a8257ea0ffb812e552aca256c4a3d2aebfd8065b), closes [#1043](https://github.com/clap-rs/clap/issues/1043)) 1818* **Suggestions:** output for flag after subcommand ([434ea5ba](https://github.com/clap-rs/clap/commit/434ea5ba71395d8c1afcf88e69f0b0d8339b01a1)) 1819 1820 1821 1822## v2.26.0 (2017-07-29) 1823 1824Minimum version of Rust is now v1.13.0 (Stable) 1825 1826 1827#### Improvements 1828 1829* bumps unicode-segmentation to v1.2 ([cd7b40a2](https://github.com/clap-rs/clap/commit/cd7b40a21c77bae17ba453c5512cb82b7d1ce474)) 1830 1831 1832#### Performance 1833 1834* update textwrap to version 0.7.0 ([c2d4e637](https://github.com/clap-rs/clap/commit/c2d4e63756a6f070e38c16dff846e9b0a53d6f93)) 1835 1836 1837 1838 1839## v2.25.1 (2017-07-21) 1840 1841#### Improvements 1842 1843* impl Default for Values + OsValues for any lifetime. ([fb7d6231f1](https://github.com/clap-rs/clap/commit/fb7d6231f13a2f79f411e62dca210b7dc9994c18)) 1844 1845#### Documentation 1846 1847* Various documentation typos and grammar fixes 1848 1849## v2.25.0 (2017-06-20) 1850 1851 1852#### Features 1853 1854* use textwrap crate for wrapping help texts ([b93870c1](https://github.com/clap-rs/clap/commit/b93870c10ae3bd90d233c586a33e086803117285)) 1855 1856#### Improvements 1857 1858* **Suggestions:** suggests to use flag after subcommand when applicable ([2671ca72](https://github.com/clap-rs/clap/commit/2671ca7260119d4311d21c4075466aafdd9da734)) 1859* Bumps bitflags crate to v0.9 1860 1861#### Documentation 1862 1863* Change `who's` -> `whose` ([53c1ffe8](https://github.com/clap-rs/clap/commit/53c1ffe87f38b05d8804a0f7832412a952845349)) 1864 1865#### Documentation 1866 1867* **App::template:** adds details about the necessity to use AppSettings::UnifiedHelpMessage when using {unified} tags in the help template ([cbea3d5a](https://github.com/clap-rs/clap/commit/cbea3d5acf3271a7a734498c4d99c709941c331e), closes [#949](https://github.com/clap-rs/clap/issues/949)) 1868* **Arg::allow_hyphen_values:** updates the docs to include warnings for allow_hyphen_values and multiple(true) used together ([f9b0d657](https://github.com/clap-rs/clap/commit/f9b0d657835d3f517f313d70962177dc30acf4a7)) 1869* **README.md:** 1870 * added a warning about using ~ deps ([821929b5](https://github.com/clap-rs/clap/commit/821929b51bd60213955705900a436c9a64fcb79f), closes [#964](https://github.com/clap-rs/clap/issues/964)) 1871* **clap_app!:** adds using the @group specifier to the macro docs ([826048cb](https://github.com/clap-rs/clap/commit/826048cb3cbc0280169303f1498ff0a2b7395883), closes [#932](https://github.com/clap-rs/clap/issues/932)) 1872 1873 1874 1875## v2.24.2 (2017-05-15) 1876 1877 1878#### Bug Fixes 1879 1880* adds a debug assertion to ensure all args added to groups actually exist ([14f6b8f3](https://github.com/clap-rs/clap/commit/14f6b8f3a2f6df73aeeec9c54a54909b1acfc158), closes [#917](https://github.com/clap-rs/clap/issues/917)) 1881* fixes a bug where args that allow values to start with a hyphen couldn't contain a double hyphen -- as a value ([ebf73a09](https://github.com/clap-rs/clap/commit/ebf73a09db6f3c03c19cdd76b1ba6113930e1643), closes [#960](https://github.com/clap-rs/clap/issues/960)) 1882* fixes a bug where positional argument help text is misaligned ([54c16836](https://github.com/clap-rs/clap/commit/54c16836dea4651806a2cfad53146a83fa3abf21)) 1883 1884#### Documentation 1885 1886* **App::template:** adds details about the necessity to use AppSettings::UnifiedHelpMessage when using {unified} tags in the help template ([cf569438](https://github.com/clap-rs/clap/commit/cf569438f309c199800bb8e46c9f140187de69d7), closes [#949](https://github.com/clap-rs/clap/issues/949)) 1887* **Arg::allow_hyphen_values:** updates the docs to include warnings for allow_hyphen_values and multiple(true) used together ([ded5a2f1](https://github.com/clap-rs/clap/commit/ded5a2f15474d4a5bd46a67b130ccb8b6781bd01)) 1888* **clap_app!:** adds using the @group specifier to the macro docs ([fe85fcb1](https://github.com/clap-rs/clap/commit/fe85fcb1772b61f13b20b7ea5290e2437a76190c), closes [#932](https://github.com/clap-rs/clap/issues/932)) 1889 1890 1891 1892## v2.24.0 (2017-05-07) 1893 1894 1895#### Bug Fixes 1896 1897* fixes a bug where args with last(true) and required(true) set were not being printed in the usage string ([3ac533fe](https://github.com/clap-rs/clap/commit/3ac533fedabf713943eedf006f830a5a486bbe80), closes [#944](https://github.com/clap-rs/clap/issues/944)) 1898* fixes a bug that was printing the arg name, instead of value name when Arg::last(true) was used ([e1fe8ac3](https://github.com/clap-rs/clap/commit/e1fe8ac3bc1f9cf4e36df0d881f8419755f1787b), closes [#940](https://github.com/clap-rs/clap/issues/940)) 1899* fixes a bug where flags were parsed as flags AND positional values when specific combinations of settings were used ([20f83292](https://github.com/clap-rs/clap/commit/20f83292d070038b8cee2a6b47e91f6b0a2f7871), closes [#946](https://github.com/clap-rs/clap/issues/946)) 1900 1901 1902 1903## v2.24.0 (2017-05-05) 1904 1905 1906#### Documentation 1907 1908* **README.md:** fix some typos ([fa34deac](https://github.com/clap-rs/clap/commit/fa34deac079f334c3af97bb7fb151880ba8887f8)) 1909 1910#### API Additions 1911 1912* **Arg:** add `default_value_os` ([d5ef8955](https://github.com/clap-rs/clap/commit/d5ef8955414b1587060f7218385256105b639c88)) 1913* **arg_matches.rs:** Added a Default implementation for Values and OsValues iterators. ([0a4384e3](https://github.com/clap-rs/clap/commit/0a4384e350eed74c2a4dc8964c203f21ac64897f)) 1914 1915 1916## v2.23.2 (2017-04-19) 1917 1918 1919#### Bug Fixes 1920 1921* **PowerShell Completions:** fixes a bug where powershells completions cant be used if no subcommands are defined ([a8bce558](https://github.com/clap-rs/clap/commit/a8bce55837dc4e0fb187dc93180884a40ae09c6f), closes [#931](https://github.com/clap-rs/clap/issues/931)) 1922 1923#### Improvements 1924 1925* bumps term_size to take advantage of better terminal dimension handling ([e05100b7](https://github.com/clap-rs/clap/commit/e05100b73d74066a90876bf38f952adf5e8ee422)) 1926* **PowerShell Completions:** massively dedups subcommand names in the generate script to make smaller scripts that are still functionally equiv ([85b0e1cc](https://github.com/clap-rs/clap/commit/85b0e1cc4b9755dda75a93d898d79bc38631552b)) 1927 1928#### Documentation 1929 1930* Fix a typo the minimum rust version required ([71dabba3](https://github.com/clap-rs/clap/commit/71dabba3ea0a17c88b0e2199c9d99f0acbf3bc17)) 1931 1932## v2.23.1 (2017-04-05) 1933 1934 1935#### Bug Fixes 1936 1937* fixes a missing newline character in the autogenerated help and version messages in some instances ([5ae9007d](https://github.com/clap-rs/clap/commit/5ae9007d984ae94ae2752df51bcbaeb0ec89bc15)) 1938 1939 1940## v2.23.0 (2017-04-05) 1941 1942 1943#### API Additions 1944 1945* `App::long_about` 1946* `App::long_version` 1947* `App::print_long_help` 1948* `App::write_long_help` 1949* `App::print_long_version` 1950* `App::write_long_version` 1951* `Arg::long_help` 1952 1953#### Features 1954 1955* allows distinguishing between short and long version messages (-V/short or --version/long) ([59272b06](https://github.com/clap-rs/clap/commit/59272b06cc213289dc604dbc694cb95d383a5d68)) 1956* allows distinguishing between short and long help with subcommands in the same manner as args ([6b371891](https://github.com/clap-rs/clap/commit/6b371891a1702173a849d1e95f9fecb168bf6fc4)) 1957* allows specifying a short help vs a long help (i.e. varying levels of detail depending on if -h or --help was used) ([ef1b24c3](https://github.com/clap-rs/clap/commit/ef1b24c3a0dff2f58c5e2e90880fbc2b69df20ee)) 1958* **clap_app!:** adds support for arg names with hyphens similar to longs with hyphens ([f7a88779](https://github.com/clap-rs/clap/commit/f7a8877978c8f90e6543d4f0d9600c086cf92cd7), closes [#869](https://github.com/clap-rs/clap/issues/869)) 1959 1960#### Bug Fixes 1961 1962* fixes a bug that wasn't allowing help and version to be properly overridden ([8b2ceb83](https://github.com/clap-rs/clap/commit/8b2ceb8368bcb70689fadf1c7f4b9549184926c1), closes [#922](https://github.com/clap-rs/clap/issues/922)) 1963 1964#### Documentation 1965 1966* **clap_app!:** documents the `--("some-arg")` method for using args with hyphens inside them ([bc08ef3e](https://github.com/clap-rs/clap/commit/bc08ef3e185393073d969d301989b6319c616c1f), closes [#919](https://github.com/clap-rs/clap/issues/919)) 1967 1968 1969 1970## v2.22.2 (2017-03-30) 1971 1972 1973#### Bug Fixes 1974 1975* **Custom Usage Strings:** fixes the usage string regression when using help templates ([0e4fd96d](https://github.com/clap-rs/clap/commit/0e4fd96d74280d306d09e60ac44f938a82321769)) 1976 1977 1978 1979## v2.22.1 (2017-03-24) 1980 1981 1982#### Bug Fixes 1983 1984* **usage:** fixes a big regression with custom usage strings ([2c41caba](https://github.com/clap-rs/clap/commit/2c41caba3c7d723a2894e315d04da796b0e97759)) 1985 1986## v2.22.0 (2017-03-23) 1987 1988#### API Additions 1989 1990* **App::name:** adds the ability to change the name of the App instance after creation ([d49e8292](https://github.com/clap-rs/clap/commit/d49e8292b026b06e2b70447cd9f08299f4fcba76), closes [#908](https://github.com/clap-rs/clap/issues/908)) 1991* **Arg::hide_default_value:** adds ability to hide the default value of an argument from the help string ([89e6ea86](https://github.com/clap-rs/clap/commit/89e6ea861e16a1ad56757ca12f6b32d02253e44a), closes [#902](https://github.com/clap-rs/clap/issues/902)) 1992 1993 1994## v2.21.3 (2017-03-23) 1995 1996#### Bug Fixes 1997 1998* **yaml:** adds support for loading author info from yaml ([e04c390c](https://github.com/clap-rs/clap/commit/e04c390c597a55fa27e724050342f16c42f1c5c9)) 1999 2000 2001## v2.21.2 (2017-03-17) 2002 2003 2004#### Improvements 2005 2006* add fish subcommand help support ([f8f68cf8](https://github.com/clap-rs/clap/commit/f8f68cf8251669aef4539a25a7c1166f0ac81ea6)) 2007* options that use `require_equals(true)` now display the equals sign in help messages, usage strings, and errors" ([c8eb0384](https://github.com/clap-rs/clap/commit/c8eb0384d394d2900ccdc1593099c97808a3fa05), closes [#903](https://github.com/clap-rs/clap/issues/903)) 2008 2009 2010#### Bug Fixes 2011 2012* setting the max term width now correctly propagates down through child subcommands 2013 2014 2015 2016## v2.21.1 (2017-03-12) 2017 2018 2019#### Bug Fixes 2020 2021* **ArgRequiredElseHelp:** fixes the precedence of this error to prioritize over other error messages ([74b751ff](https://github.com/clap-rs/clap/commit/74b751ff2e3631e337b7946347c1119829a41c53), closes [#895](https://github.com/clap-rs/clap/issues/895)) 2022* **Positionals:** fixes some regression bugs resulting from old asserts in debug mode. ([9a3bc98e](https://github.com/clap-rs/clap/commit/9a3bc98e9b55e7514b74b73374c5ac8b6e5e0508), closes [#896](https://github.com/clap-rs/clap/issues/896)) 2023 2024 2025 2026## v2.21.0 (2017-03-09) 2027 2028#### Performance 2029 2030* doesn't run `arg_post_processing` on multiple values anymore ([ec516182](https://github.com/clap-rs/clap/commit/ec5161828729f6a53f0fccec8648f71697f01f78)) 2031* changes internal use of `VecMap` to `Vec` for matched values of `Arg`s ([22bf137a](https://github.com/clap-rs/clap/commit/22bf137ac581684c6ed460d2c3c640c503d62621)) 2032* vastly reduces the amount of cloning when adding non-global args minus when they're added from `App::args` which is forced to clone ([8da0303b](https://github.com/clap-rs/clap/commit/8da0303bc02db5fe047cfc0631a9da41d9dc60f7)) 2033* refactor to remove unneeded vectors and allocations and checks for significant performance increases ([0efa4119](https://github.com/clap-rs/clap/commit/0efa4119632f134fc5b8b9695b007dd94b76735d)) 2034 2035#### Documentation 2036 2037* Fix examples link in CONTRIBUTING.md ([60cf875d](https://github.com/clap-rs/clap/commit/60cf875d67a252e19bb85054be57696fac2c57a1)) 2038 2039#### Improvements 2040 2041* when `AppSettings::SubcommandsNegateReqs` and `ArgsNegateSubcommands` are used, a new more accurate double line usage string is shown ([50f02300](https://github.com/clap-rs/clap/commit/50f02300d81788817acefef0697e157e01b6ca32), closes [#871](https://github.com/clap-rs/clap/issues/871)) 2042 2043#### API Additions 2044 2045* **Arg::last:** adds the ability to mark a positional argument as 'last' which means it should be used with `--` syntax and can be accessed early ([6a7aea90](https://github.com/clap-rs/clap/commit/6a7aea9043b83badd9ab038b4ecc4c787716147e), closes [#888](https://github.com/clap-rs/clap/issues/888)) 2046* provides `default_value_os` and `default_value_if[s]_os` ([0f2a3782](https://github.com/clap-rs/clap/commit/0f2a378219a6930748d178ba350fe5925be5dad5), closes [#849](https://github.com/clap-rs/clap/issues/849)) 2047* provides `App::help_message` and `App::version_message` which allows one to override the auto-generated help/version flag associated help ([389c413](https://github.com/clap-rs/clap/commit/389c413b7023dccab8c76aa00577ea1d048e7a99), closes [#889](https://github.com/clap-rs/clap/issues/889)) 2048 2049#### New Settings 2050 2051* **InferSubcommands:** adds a setting to allow one to infer shortened subcommands or aliases (i.e. for subcommmand "test", "t", "te", or "tes" would be allowed assuming no other ambiguities) ([11602032](https://github.com/clap-rs/clap/commit/11602032f6ff05881e3adf130356e37d5e66e8f9), closes [#863](https://github.com/clap-rs/clap/issues/863)) 2052 2053#### Bug Fixes 2054 2055* doesn't print the argument sections in the help message if all args in that section are hidden ([ce5ee5f5](https://github.com/clap-rs/clap/commit/ce5ee5f5a76f838104aeddd01c8ec956dd347f50)) 2056* doesn't include the various [ARGS] [FLAGS] or [OPTIONS] if the only ones available are hidden ([7b4000af](https://github.com/clap-rs/clap/commit/7b4000af97637703645c5fb2ac8bb65bd546b95b), closes [#882](https://github.com/clap-rs/clap/issues/882)) 2057* now correctly shows subcommand as required in the usage string when AppSettings::SubcommandRequiredElseHelp is used ([8f0884c1](https://github.com/clap-rs/clap/commit/8f0884c1764983a49b45de52a1eddf8d721564d8)) 2058* fixes some memory leaks when an error is detected and clap exits ([8c2dd287](https://github.com/clap-rs/clap/commit/8c2dd28718262ace4ae0db98563809548e02a86b)) 2059* fixes a trait that's marked private accidentally, but should be crate internal public ([1ae21108](https://github.com/clap-rs/clap/commit/1ae21108015cea87e5360402e1747025116c7878)) 2060* **Completions:** fixes a bug that tried to propagate global args multiple times when generating multiple completion scripts ([5e9b9cf4](https://github.com/clap-rs/clap/commit/5e9b9cf4dd80fa66a624374fd04e6545635c1f94), closes [#846](https://github.com/clap-rs/clap/issues/846)) 2061 2062#### Features 2063 2064* **Options:** adds the ability to require the equals syntax with options --opt=val ([f002693d](https://github.com/clap-rs/clap/commit/f002693dec6a6959c4e9590cb7b7bfffd6d6e5bc), closes [#833](https://github.com/clap-rs/clap/issues/833)) 2065 2066 2067 2068## v2.20.5 (2017-02-18) 2069 2070 2071#### Bug Fixes 2072 2073* **clap_app!:** fixes a critical bug of a missing fragment specifier when using `!property` style tags. ([5635c1f94](https://github.com/clap-rs/clap/commit/5e9b9cf4dd80fa66a624374fd04e6545635c1f94)) 2074 2075 2076## v2.20.4 (2017-02-15) 2077 2078 2079#### Bug Fixes 2080 2081* **Completions:** fixes a bug that tried to propagate global args multiple times when generating multiple completion scripts ([5e9b9cf4](https://github.com/clap-rs/clap/commit/5e9b9cf4dd80fa66a624374fd04e6545635c1f94), closes [#846](https://github.com/clap-rs/clap/issues/846)) 2082 2083#### Documentation 2084 2085* Fix examples link in CONTRIBUTING.md ([60cf875d](https://github.com/clap-rs/clap/commit/60cf875d67a252e19bb85054be57696fac2c57a1)) 2086 2087 2088## v2.20.3 (2017-02-03) 2089 2090 2091#### Documentation 2092 2093* **Macros:** adds a warning about changing values in Cargo.toml not triggering a rebuild automatically ([112aea3e](https://github.com/clap-rs/clap/commit/112aea3e42ae9e0c0a2d33ebad89496dbdd95e5d), closes [#838](https://github.com/clap-rs/clap/issues/838)) 2094 2095#### Bug Fixes 2096 2097* fixes a println->debugln typo ([279aa62e](https://github.com/clap-rs/clap/commit/279aa62eaf08f56ce090ba16b937bc763cbb45be)) 2098* fixes bash completions for commands that have an underscore in the name ([7f5cfa72](https://github.com/clap-rs/clap/commit/7f5cfa724f0ac4e098f5fe466c903febddb2d994), closes [#581](https://github.com/clap-rs/clap/issues/581)) 2099* fixes a bug where ZSH completions would panic if the binary name had an underscore in it ([891a2a00](https://github.com/clap-rs/clap/commit/891a2a006f775e92c556dda48bb32fac9807c4fb), closes [#581](https://github.com/clap-rs/clap/issues/581)) 2100* allow final word to be wrapped in wrap_help ([564c5f0f](https://github.com/clap-rs/clap/commit/564c5f0f1730f4a2c1cdd128664f1a981c31dcd4), closes [#828](https://github.com/clap-rs/clap/issues/828)) 2101* fixes a bug where global args weren't included in the generated completion scripts ([9a1e006e](https://github.com/clap-rs/clap/commit/9a1e006eb75ad5a6057ebd119aa90f7e06c0ace8), closes [#841](https://github.com/clap-rs/clap/issues/841)) 2102 2103 2104 2105## v2.20.2 (2017-02-03) 2106 2107#### Bug Fixes 2108 2109* fixes a critical bug where subcommand settings were being propagated too far ([74648c94](https://github.com/clap-rs/clap/commit/74648c94b893df542bfa5bb595e68c7bb8167e36), closes [#832](https://github.com/clap-rs/clap/issues/832)) 2110 2111 2112#### Improvements 2113 2114* adds ArgGroup::multiple to the supported YAML fields for building ArgGroups from YAML ([d8590037](https://github.com/clap-rs/clap/commit/d8590037ce07dafd8cd5b26928aa4a9fd3018288), closes [#840](https://github.com/clap-rs/clap/issues/840)) 2115 2116## v2.20.1 (2017-01-31) 2117 2118#### Bug Fixes 2119 2120* allow final word to be wrapped in wrap_help ([564c5f0f](https://github.com/clap-rs/clap/commit/564c5f0f1730f4a2c1cdd128664f1a981c31dcd4), closes [#828](https://github.com/clap-rs/clap/issues/828)) 2121* actually show character in debug output ([84d8c547](https://github.com/clap-rs/clap/commit/84d8c5476de95b7f37d61888bc4f13688b712434)) 2122* include final character in line length ([aff4ba18](https://github.com/clap-rs/clap/commit/aff4ba18da8147e1259b04b0bfbc1fcb5c78a3c0)) 2123 2124#### Improvements 2125 2126* updates libc and term_size deps for the libc version conflict ([6802ac4a](https://github.com/clap-rs/clap/commit/6802ac4a59c142cda9ec55ca0c45ae5cb9a6ab55)) 2127 2128#### Documentation 2129 2130* fix link from app_from_crate! to crate_authors! (#822) ([5b29be9b](https://github.com/clap-rs/clap/commit/5b29be9b073330ab1f7227cdd19fe4aab39d5dcb)) 2131* fix spelling of "guaranteed" ([4f30a65b](https://github.com/clap-rs/clap/commit/4f30a65b9c03eb09607eb91a929a6396637dc105)) 2132 2133 2134#### New Settings 2135 2136* **ArgsNegateSubcommands:** disables args being allowed between subcommands ([5e2af8c9](https://github.com/clap-rs/clap/commit/5e2af8c96adb5ab75fa2d1536237ebcb41869494), closes [#793](https://github.com/clap-rs/clap/issues/793)) 2137* **DontCollapseArgsInUsage:** disables the collapsing of positional args into `[ARGS]` in the usage string ([c2978afc](https://github.com/clap-rs/clap/commit/c2978afc61fb46d5263ab3b2d87ecde1c9ce1553), closes [#769](https://github.com/clap-rs/clap/issues/769)) 2138* **DisableHelpSubcommand:** disables building the `help` subcommand ([a10fc859](https://github.com/clap-rs/clap/commit/a10fc859ee20159fbd9ff4337be59b76467a64f2)) 2139* **AllowMissingPositional:** allows one to implement `$ prog [optional] <required>` style CLIs where the second positional argument is required, but the first is optional ([1110fdc7](https://github.com/clap-rs/clap/commit/1110fdc7a345c108820dc45783a9bf893fa4c214), closes [#636](https://github.com/clap-rs/clap/issues/636)) 2140* **PropagateGlobalValuesDown:** automatically propagats global arg's values down through *used* subcommands ([985536c8](https://github.com/clap-rs/clap/commit/985536c8ebcc09af98aac835f42a8072ad58c262), closes [#694](https://github.com/clap-rs/clap/issues/694)) 2141 2142#### API Additions 2143 2144##### Arg 2145 2146* **Arg::value_terminator:** adds the ability to terminate multiple values with a given string or char ([be64ce0c](https://github.com/clap-rs/clap/commit/be64ce0c373efc106384baca3f487ea99fe7b8cf), closes [#782](https://github.com/clap-rs/clap/issues/782)) 2147* **Arg::default_value_if[s]:** adds new methods for *conditional* default values (such as a particular value from another argument was used) ([eb4010e7](https://github.com/clap-rs/clap/commit/eb4010e7b21724447ef837db11ac441915728f22)) 2148* **Arg::requires_if[s]:** adds the ability to *conditionally* require additional args (such as if a particular value was used) ([198449d6](https://github.com/clap-rs/clap/commit/198449d64393c265f0bc327aaeac23ec4bb97226)) 2149* **Arg::required_if[s]:** adds the ability for an arg to be *conditionally* required (i.e. "arg X is only required if arg Y was used with value Z") ([ee9cfddf](https://github.com/clap-rs/clap/commit/ee9cfddf345a6b5ae2af42ba72aa5c89e2ca7f59)) 2150* **Arg::validator_os:** adds ability to validate values which may contain invalid UTF-8 ([47232498](https://github.com/clap-rs/clap/commit/47232498a813db4f3366ccd3e9faf0bff56433a4)) 2151 2152##### Macros 2153 2154* **crate_description!:** Uses the `Cargo.toml` description field to fill in the `App::about` method at compile time ([4d9a82db](https://github.com/clap-rs/clap/commit/4d9a82db8e875e9b64a9c2a5c6e22c25afc1279d), closes [#778](https://github.com/clap-rs/clap/issues/778)) 2155* **crate_name!:** Uses the `Cargo.toml` name field to fill in the `App::new` method at compile time ([4d9a82db](https://github.com/clap-rs/clap/commit/4d9a82db8e875e9b64a9c2a5c6e22c25afc1279d), closes [#778](https://github.com/clap-rs/clap/issues/778)) 2156* **app_from_crate!:** Combines `crate_version!`, `crate_name!`, `crate_description!`, and `crate_authors!` into a single macro call to build a default `App` instance from the `Cargo.toml` fields ([4d9a82db](https://github.com/clap-rs/clap/commit/4d9a82db8e875e9b64a9c2a5c6e22c25afc1279d), closes [#778](https://github.com/clap-rs/clap/issues/778)) 2157 2158 2159#### Features 2160 2161* **no_cargo:** adds a `no_cargo` feature to disable Cargo-env-var-dependent macros for those *not* using `cargo` to build their crates (#786) ([6fdd2f9d](https://github.com/clap-rs/clap/commit/6fdd2f9d693aaf1118fc61bd362273950703f43d)) 2162 2163#### Bug Fixes 2164 2165* **Options:** fixes a critical bug where options weren't forced to have a value ([5a5f2b1e](https://github.com/clap-rs/clap/commit/5a5f2b1e9f598a0d0280ef3e98abbbba2bc41132), closes [#665](https://github.com/clap-rs/clap/issues/665)) 2166* fixes a bug where calling the help of a subcommand wasn't ignoring required args of parent commands ([d3d34a2b](https://github.com/clap-rs/clap/commit/d3d34a2b51ef31004055b0ab574f766d801c3adf), closes [#789](https://github.com/clap-rs/clap/issues/789)) 2167* **Help Subcommand:** fixes a bug where the help subcommand couldn't be overridden ([d34ec3e0](https://github.com/clap-rs/clap/commit/d34ec3e032d03e402d8e87af9b2942fe2819b2da), closes [#787](https://github.com/clap-rs/clap/issues/787)) 2168* **Low Index Multiples:** fixes a bug which caused combinations of LowIndexMultiples and `Arg::allow_hyphen_values` to fail parsing ([26c670ca](https://github.com/clap-rs/clap/commit/26c670ca16d2c80dc26d5c1ce83380ace6357318)) 2169 2170#### Improvements 2171 2172* **Default Values:** improves the error message when default values are involved ([1f33de54](https://github.com/clap-rs/clap/commit/1f33de545036e7fd2f80faba251fca009bd519b8), closes [#774](https://github.com/clap-rs/clap/issues/774)) 2173* **YAML:** adds conditional requirements and conditional default values to YAML ([9a4df327](https://github.com/clap-rs/clap/commit/9a4df327893486adb5558ffefba790c634ccdc6e), closes [#764](https://github.com/clap-rs/clap/issues/764)) 2174* Support `--("some-arg-name")` syntax for defining long arg names when using `clap_app!` macro ([f41ec962](https://github.com/clap-rs/clap/commit/f41ec962c243a5ffff8b1be1ae2ad63970d3d1d4)) 2175* Support `("some app name")` syntax for defining app names when using `clap_app!` macro ([9895b671](https://github.com/clap-rs/clap/commit/9895b671cff784f35cf56abcd8270f7c2ba09699), closes [#759](https://github.com/clap-rs/clap/issues/759)) 2176* **Help Wrapping:** long app names (with spaces), authors, and descriptions are now wrapped appropriately ([ad4691b7](https://github.com/clap-rs/clap/commit/ad4691b71a63e951ace346318238d8834e04ad8a), closes [#777](https://github.com/clap-rs/clap/issues/777)) 2177 2178 2179#### Documentation 2180 2181* **Conditional Default Values:** fixes the failing doc tests of Arg::default_value_ifs ([4ef09101](https://github.com/clap-rs/clap/commit/4ef091019c083b4db1a0c13f1c1e95ac363259f2)) 2182* **Conditional Requirements:** adds docs for Arg::requires_ifs ([7f296e29](https://github.com/clap-rs/clap/commit/7f296e29db7d9036e76e5dbcc9c8b20dfe7b25bd)) 2183* **README.md:** fix some typos ([f22c21b4](https://github.com/clap-rs/clap/commit/f22c21b422d5b287d1a1ac183a379ee02eebf54f)) 2184* **src/app/mod.rs:** fix some typos ([5c9b0d47](https://github.com/clap-rs/clap/commit/5c9b0d47ca78dea285c5b9dec79063d24c3e451a)) 2185 2186## v2.19.3 (2016-12-28) 2187 2188 2189#### Bug Fixes 2190 2191* fixes a bug where calling the help of a subcommand wasn't ignoring required args of parent commands ([a0ee4993](https://github.com/clap-rs/clap/commit/a0ee4993015ea97b06b5bc9f378d8bcb18f1c51c), closes [#789](https://github.com/clap-rs/clap/issues/789)) 2192 2193 2194 2195## v2.19.2 (2016-12-08) 2196 2197#### Bug Fixes 2198 2199* **ZSH Completions:** escapes square brackets in ZSH completions ([7e17d5a3](https://github.com/clap-rs/clap/commit/7e17d5a36b2cc2cc77e7b15796b14d639ed3cbf7), closes [#771](https://github.com/clap-rs/clap/issues/771)) 2200 2201#### Documentation 2202 2203* **Examples:** adds subcommand examples ([0e0f3354](https://github.com/clap-rs/clap/commit/0e0f33547a6901425afc1d9fbe19f7ae3832d9a4), closes [#766](https://github.com/clap-rs/clap/issues/766)) 2204* **README.md:** adds guidance on when to use ~ in version pinning, and clarifies breaking change policy ([591eaefc](https://github.com/clap-rs/clap/commit/591eaefc7319142ba921130e502bb0729feed907), closes [#765](https://github.com/clap-rs/clap/issues/765)) 2205 2206 2207 2208## v2.19.1 (2016-12-01) 2209 2210 2211#### Bug Fixes 2212 2213* **Help Messages:** fixes help message alignment when specific settings are used on options ([cd94b318](https://github.com/clap-rs/clap/commit/cd94b3188d63b63295a319e90e826bca46befcd2), closes [#760](https://github.com/clap-rs/clap/issues/760)) 2214 2215#### Improvements 2216 2217* **Bash Completion:** allows bash completion to fall back to traditional bash completion upon no matching completing function ([b1b16d56](https://github.com/clap-rs/clap/commit/b1b16d56d8fddf819bdbe24b3724bb6a9f3fa613))) 2218 2219 2220## v2.19.0 (2016-11-21) 2221 2222#### Features 2223 2224* allows specifying AllowLeadingHyphen style values, but only for specific args vice command wide ([c0d70feb](https://github.com/clap-rs/clap/commit/c0d70febad9996a77a54107054daf1914c50d4ef), closes [#742](https://github.com/clap-rs/clap/issues/742)) 2225 2226#### Bug Fixes 2227 2228* **Required Unless:** fixes a bug where having required_unless set doesn't work when conflicts are also set ([d20331b6](https://github.com/clap-rs/clap/commit/d20331b6f7940ac3a4e919999f8bb4780875125d), closes [#753](https://github.com/clap-rs/clap/issues/753)) 2229* **ZSH Completions:** fixes an issue where zsh completions caused panics if there were no subcommands ([49e7cdab](https://github.com/clap-rs/clap/commit/49e7cdab76dd1ccc07221e360f07808ec62648aa), closes [#754](https://github.com/clap-rs/clap/issues/754)) 2230 2231#### Improvements 2232 2233* **Validators:** improves the error messages for validators ([65eb3385](https://github.com/clap-rs/clap/commit/65eb33859d3ff53e7d3277f02a9d3fd9038a9dfb), closes [#744](https://github.com/clap-rs/clap/issues/744)) 2234 2235#### Documentation 2236 2237* updates the docs landing page ([01e1e33f](https://github.com/clap-rs/clap/commit/01e1e33f377934099a4a725fab5cd6c5ff50eaa2)) 2238* adds the macro version back to the readme ([45eb9bf1](https://github.com/clap-rs/clap/commit/45eb9bf130329c3f3853aba0342c2fe3c64ff80f)) 2239* fix broken docs links ([808e7cee](https://github.com/clap-rs/clap/commit/808e7ceeb86d4a319bdc270f51c23a64621dbfb3)) 2240* **Compatibility Policy:** adds an official compatibility policy to ([760d66dc](https://github.com/clap-rs/clap/commit/760d66dc17310b357f257776624151da933cd25d), closes [#740](https://github.com/clap-rs/clap/issues/740)) 2241* **Contributing:** updates the readme to improve the readability and contributing sections ([eb51316c](https://github.com/clap-rs/clap/commit/eb51316cdfdc7258d287ba13b67ef2f42bd2b8f6)) 2242 2243## v2.18.0 (2016-11-05) 2244 2245 2246#### Features 2247 2248* **Completions:** adds completion support for PowerShell. ([cff82c88](https://github.com/clap-rs/clap/commit/cff82c880e21064fca63351507b80350df6caadf), closes [#729](https://github.com/clap-rs/clap/issues/729)) 2249 2250 2251 2252## v2.17.1 (2016-11-02) 2253 2254 2255#### Bug Fixes 2256 2257* **Low Index Multiples:** fixes a bug where using low index multiples was propagated to subcommands ([33924e88](https://github.com/clap-rs/clap/commit/33924e884461983c4e6b5ea1330fecc769a4ade7), closes [#725](https://github.com/clap-rs/clap/issues/725)) 2258 2259 2260 2261## v2.17.0 (2016-11-01) 2262 2263 2264#### Features 2265 2266* **Positional Args:** allows specifying the second to last positional argument as multiple(true) ([1ced2a74](https://github.com/clap-rs/clap/commit/1ced2a7433ea8937a1b260ea65d708f32ca7c95e), closes [#725](https://github.com/clap-rs/clap/issues/725)) 2267 2268 2269 2270## v2.16.4 (2016-10-31) 2271 2272 2273#### Improvements 2274 2275* **Error Output:** conflicting errors are now symmetrical, meaning more consistent and less confusing ([3d37001d](https://github.com/clap-rs/clap/commit/3d37001d1dc647d73cc597ff172f1072d4beb80d), closes [#718](https://github.com/clap-rs/clap/issues/718)) 2276 2277#### Documentation 2278 2279* Fix typo in example `13a_enum_values_automatic` ([c22fbc07](https://github.com/clap-rs/clap/commit/c22fbc07356e556ffb5d1a79ec04597d149b915e)) 2280* **README.md:** fixes failing yaml example (#715) ([21fba9e6](https://github.com/clap-rs/clap/commit/21fba9e6cd8c163012999cd0ce271ec8780c5695)) 2281 2282#### Bug Fixes 2283 2284* **ZSH Completions:** fixes bug that caused panic on subcommands with aliases ([5c70e1a0](https://github.com/clap-rs/clap/commit/5c70e1a01bc977e44c10015d18bb8e215c32dfc8), closes [#714](https://github.com/clap-rs/clap/issues/714)) 2285* **debug:** fixes the debug feature (#716) ([6c11ccf4](https://github.com/clap-rs/clap/commit/6c11ccf443d46258d51f7cda33fbcc81e7fe8e90)) 2286 2287 2288 2289## v2.16.3 (2016-10-28) 2290 2291 2292#### Bug Fixes 2293 2294* Derive display order after propagation ([9cb6facf](https://github.com/clap-rs/clap/commit/9cb6facf507aff7cddd124b8c29714d2b0e7bd13), closes [#706](https://github.com/clap-rs/clap/issues/706)) 2295* **yaml-example:** inconsistent args ([847f7199](https://github.com/clap-rs/clap/commit/847f7199219ead5065561d91d64780d99ae4b587)) 2296 2297 2298 2299## v2.16.2 (2016-10-25) 2300 2301 2302#### Bug Fixes 2303 2304* **Fish Completions:** fixes a bug where single quotes are not escaped ([780b4a18](https://github.com/clap-rs/clap/commit/780b4a18281b6f7f7071e1b9db2290fae653c406), closes [#704](https://github.com/clap-rs/clap/issues/704)) 2305 2306 2307## v2.16.1 (2016-10-24) 2308 2309 2310#### Bug Fixes 2311 2312* **Help Message:** fixes a regression bug where args with multiple(true) threw off alignment ([ebddac79](https://github.com/clap-rs/clap/commit/ebddac791f3ceac193d5ad833b4b734b9643a7af), closes [#702](https://github.com/clap-rs/clap/issues/702)) 2313 2314 2315 2316## v2.16.0 (2016-10-23) 2317 2318 2319#### Features 2320 2321* **Completions:** adds ZSH completion support ([3e36b0ba](https://github.com/clap-rs/clap/commit/3e36b0bac491d3f6194aee14604caf7be26b3d56), closes [#699](https://github.com/clap-rs/clap/issues/699)) 2322 2323 2324 2325## v2.15.0 (2016-10-21) 2326 2327 2328#### Features 2329 2330* **AppSettings:** adds new setting `AppSettings::AllowNegativeNumbers` ([ab064546](https://github.com/clap-rs/clap/commit/ab06454677fb6aa9b9f804644fcca2168b1eaee3), closes [#696](https://github.com/clap-rs/clap/issues/696)) 2331 2332#### Documentation 2333 2334* **app/settings.rs:** moves variants to roughly alphabetical order ([9ed4d4d7](https://github.com/clap-rs/clap/commit/9ed4d4d7957a23357aef60081e45639ab9e3905f)) 2335 2336 2337## v2.14.1 (2016-10-20) 2338 2339 2340#### Documentation 2341 2342* Improve documentation around features ([4ee85b95](https://github.com/clap-rs/clap/commit/4ee85b95d2d16708a016a3ba4e6e2c93b89b7fad)) 2343* reword docs for ErrorKind and app::Settings ([3ccde7a4](https://github.com/clap-rs/clap/commit/3ccde7a4b8f7a2ea8b916a5415c04a8ff4b5cb7a)) 2344* fix tests that fail when the "suggestions" feature is disabled ([996fc381](https://github.com/clap-rs/clap/commit/996fc381763a48d125c7ea8a58fed057fd0b4ac6)) 2345* fix the OsString-using doc-tests ([af9e1a39](https://github.com/clap-rs/clap/commit/af9e1a393ce6cdda46a03c8a4f48df222b015a24)) 2346* tag non-rust code blocks as such instead of ignoring them ([0ba9f4b1](https://github.com/clap-rs/clap/commit/0ba9f4b123f281952581b6dec948f7e51dd22890)) 2347* **ErrorKind:** improve some errors about subcommands ([9f6217a4](https://github.com/clap-rs/clap/commit/9f6217a424da823343d7b801b9c350dee3cd1906)) 2348* **yaml:** make sure the doc-tests don't fail before "missing file" ([8c0f5551](https://github.com/clap-rs/clap/commit/8c0f55516f4910c78c9f8a2bdbd822729574f95b)) 2349 2350#### Improvements 2351 2352* Stabilize clap_app! ([cd516006](https://github.com/clap-rs/clap/commit/cd516006e35c37b005f329338560a0a53d1f3e00)) 2353* **with_defaults:** Deprecate App::with_defaults() ([26085409](https://github.com/clap-rs/clap/commit/2608540940c8bb66e517b65706bc7dea55510682), closes [#638](https://github.com/clap-rs/clap/issues/638)) 2354 2355#### Bug Fixes 2356 2357* fixes a bug that made determining when to auto-wrap long help messages inconsistent ([468baadb](https://github.com/clap-rs/clap/commit/468baadb8398fc1d37897b0c49374aef4cf97dca), closes [#688](https://github.com/clap-rs/clap/issues/688)) 2358* **Completions:** fish completions for nested subcommands ([a61eaf8a](https://github.com/clap-rs/clap/commit/a61eaf8aade76cfe90ccc0f7125751ebf60e3254)) 2359* **features:** Make lints not enable other nightly-requiring features ([835f75e3](https://github.com/clap-rs/clap/commit/835f75e3ba20999117363ed9f916464d777f36ef)) 2360 2361 2362 2363## v2.14.0 (2016-10-05) 2364 2365 2366#### Features 2367 2368* **arg_aliases:** Ability to alias arguments ([33b5f6ef](https://github.com/clap-rs/clap/commit/33b5f6ef2c9612ecabb31f96b824793e46bfd3dd), closes [#669](https://github.com/clap-rs/clap/issues/669)) 2369* **flag_aliases:** Ability to alias flags ([40d6dac9](https://github.com/clap-rs/clap/commit/40d6dac973927dded6ab423481634ef47ee7bfd7)) 2370 2371#### Bug Fixes 2372 2373* **UsageParser:** Handle non-ascii names / options. ([1d6a7c6e](https://github.com/clap-rs/clap/commit/1d6a7c6e7e6aadc527346aa822f19d8587f714f3), closes [#664](https://github.com/clap-rs/clap/issues/664)) 2374 2375#### Documentation 2376 2377* typo ([bac417fa](https://github.com/clap-rs/clap/commit/bac417fa1cea3d32308334c7cccfcf54546cd9d8)) 2378 2379 2380## v2.13.0 (2016-09-18) 2381 2382 2383#### Documentation 2384 2385* updates README.md with new website information and updated video tutorials info ([0c19c580](https://github.com/clap-rs/clap/commit/0c19c580cf50f1b82ff32f70b36708ae2bcac132)) 2386* updates the docs about removing implicit value_delimiter(true) ([c81bc722](https://github.com/clap-rs/clap/commit/c81bc722ebb8a86d22be89b5aec98df9fe222a08)) 2387* **Default Values:** adds better examples on using default values ([57a8d9ab](https://github.com/clap-rs/clap/commit/57a8d9abb2f973c235a8a14f8fc031673d7a7460), closes [#418](https://github.com/clap-rs/clap/issues/418)) 2388 2389#### Bug Fixes 2390 2391* **Value Delimiters:** fixes the confusion around implicitly setting value delimiters. (default is now `false`) ([09d4d0a9](https://github.com/clap-rs/clap/commit/09d4d0a9038d7ce2df55c2aec95e16f36189fcee), closes [#666](https://github.com/clap-rs/clap/issues/666)) 2392 2393 2394 2395## v2.12.1 (2016-09-13) 2396 2397 2398#### Bug Fixes 2399 2400* **Help Wrapping:** fixes a regression-bug where the old {n} newline char stopped working ([92ac353b](https://github.com/clap-rs/clap/commit/92ac353b48b7caa2511ad2a046d94da93c236cf6), closes [#661](https://github.com/clap-rs/clap/issues/661)) 2401 2402 2403 2404## v2.12.0 (2016-09-13) 2405 2406 2407#### Features 2408 2409* **Help:** adds ability to hide the possible values on a per argument basis ([9151ef73](https://github.com/clap-rs/clap/commit/9151ef739871f2e74910c342299c0de196b95dec), closes [#640](https://github.com/clap-rs/clap/issues/640)) 2410* **help:** allow for limiting detected terminal width ([a43e28af](https://github.com/clap-rs/clap/commit/a43e28af85c9a9deaedd5ef735f4f13008daab29), closes [#653](https://github.com/clap-rs/clap/issues/653)) 2411 2412#### Documentation 2413 2414* **Help Wrapping:** removes the verbage about using `'{n}'` to insert newlines in help text ([c5a2b352](https://github.com/clap-rs/clap/commit/c5a2b352ca600f5b802290ad945731066cd53611)) 2415* **Value Delimiters:** updates the docs for the Arg::multiple method WRT value delimiters and default settings ([f9d17a06](https://github.com/clap-rs/clap/commit/f9d17a060aa53f10d0a6e1a7eed5d989d1a59533)) 2416* **appsettings:** Document AppSetting::DisableVersion ([94501965](https://github.com/clap-rs/clap/commit/945019654d2ca67eb2b1d6014fdf80b84d528d30), closes [#589](https://github.com/clap-rs/clap/issues/589)) 2417 2418#### Bug Fixes 2419 2420* **AllowLeadingHyphen:** fixes a bug where valid args aren't recognized with this setting ([a9699e4d](https://github.com/clap-rs/clap/commit/a9699e4d7cdc9a06e73b845933ff1fe6d76f016a), closes [#588](https://github.com/clap-rs/clap/issues/588)) 2421 2422#### Improvements 2423 2424* **Help Wrapping:** 2425 * clap now ignores hard newlines in help messages and properly re-aligns text, but still wraps if the term width is too small ([c7678523](https://github.com/clap-rs/clap/commit/c76785239fd42adc8ca04f9202b6fec615aa9f14), closes [#617](https://github.com/clap-rs/clap/issues/617)) 2426 * makes some minor changes to when next line help is automatically used ([01cae799](https://github.com/clap-rs/clap/commit/01cae7990a33167ac35103fb36c811b4fe6eb98f)) 2427* **Value Delimiters:** changes the default value delimiter rules ([f9e69254](https://github.com/clap-rs/clap/commit/f9e692548e8c94de15f909432de301407d6bb834), closes [#655](https://github.com/clap-rs/clap/issues/655)) 2428* **YAML:** supports setting Arg::require_delimiter from YAML ([b9b55a39](https://github.com/clap-rs/clap/commit/b9b55a39dfebcdbdc05dca2692927e503db50816)) 2429 2430#### Performance 2431 2432* **help:** fix redundant contains() checks ([a8afed74](https://github.com/clap-rs/clap/commit/a8afed7428bf0733f8e93bb11ad6c00d9e970fcc)) 2433 2434 2435 2436## v2.11.3 (2016-09-07) 2437 2438 2439#### Documentation 2440 2441* **Help Wrapping:** removes the verbage about using `'{n}'` to insert newlines in help text ([c5a2b352](https://github.com/clap-rs/clap/commit/c5a2b352ca600f5b802290ad945731066cd53611)) 2442 2443#### Improvements 2444 2445* **Help Wrapping:** 2446 * clap now ignores hard newlines in help messages and properly re-aligns text, but still wraps if the term width is too small ([c7678523](https://github.com/clap-rs/clap/commit/c76785239fd42adc8ca04f9202b6fec615aa9f14), closes [#617](https://github.com/clap-rs/clap/issues/617)) 2447 * makes some minor changes to when next line help is automatically used ([01cae799](https://github.com/clap-rs/clap/commit/01cae7990a33167ac35103fb36c811b4fe6eb98f)) 2448* **YAML:** supports setting Arg::require_delimiter from YAML ([b9b55a39](https://github.com/clap-rs/clap/commit/b9b55a39dfebcdbdc05dca2692927e503db50816)) 2449 2450 2451 2452 2453## v2.11.2 (2016-09-06) 2454 2455#### Improvements 2456 2457* **Help Wrapping:** makes some minor changes to when next line help is automatically used ([5658b117](https://github.com/clap-rs/clap/commit/5658b117aec3e03adff9c8c52a4c4bc1fcb4e1ff)) 2458 2459 2460## v2.11.1 (2016-09-05) 2461 2462 2463#### Bug Fixes 2464 2465* **Settings:** fixes an issue where settings weren't propagated down through grandchild subcommands ([b3efc107](https://github.com/clap-rs/clap/commit/b3efc107515d78517b20798ff3890b8a2b04498e), closes [#638](https://github.com/clap-rs/clap/issues/638)) 2466 2467#### Features 2468 2469* **Errors:** Errors with custom description ([58512f2f](https://github.com/clap-rs/clap/commit/58512f2fcb430745f1ee6ee8f1c67f62dc216c73)) 2470 2471#### Improvements 2472 2473* **help:** use term_size instead of home-grown solution ([fc7327e9](https://github.com/clap-rs/clap/commit/fc7327e9dcf4258ef2baebf0a8714d9c0622855b)) 2474 2475 2476 2477## v2.11.0 (2016-08-28) 2478 2479 2480#### Bug Fixes 2481 2482* **Groups:** fixes some usage strings that contain both args in groups and ones that conflict with each other ([3d782def](https://github.com/clap-rs/clap/commit/3d782def57725e2de26ca5a5bc5cc2e40ddebefb), closes [#616](https://github.com/clap-rs/clap/issues/616)) 2483 2484#### Documentation 2485 2486* moves docs to docs.rs ([03209d5e](https://github.com/clap-rs/clap/commit/03209d5e1300906f00bafec1869c2047a92e5071), closes [#634](https://github.com/clap-rs/clap/issues/634)) 2487 2488#### Improvements 2489 2490* **Completions:** uses standard conventions for bash completion files, namely '{bin}.bash-completion' ([27f5bbfb](https://github.com/clap-rs/clap/commit/27f5bbfbcc9474c2f57c2b92b1feb898ae46ee70), closes [#567](https://github.com/clap-rs/clap/issues/567)) 2491* **Help:** automatically moves help text to the next line and wraps when term width is determined to be too small, or help text is too long ([150964c4](https://github.com/clap-rs/clap/commit/150964c4e7124d54476c9d9b4b3f2406f0fd00e5), closes [#597](https://github.com/clap-rs/clap/issues/597)) 2492* **YAML Errors:** vastly improves error messages when using YAML ([f43b7c65](https://github.com/clap-rs/clap/commit/f43b7c65941c53adc0616b8646a21dc255862eb2), closes [#574](https://github.com/clap-rs/clap/issues/574)) 2493 2494#### Features 2495 2496* adds App::with_defaults to automatically use crate_authors! and crate_version! macros ([5520bb01](https://github.com/clap-rs/clap/commit/5520bb012c127dfd299fd55699443c744d8dcd5b), closes [#600](https://github.com/clap-rs/clap/issues/600)) 2497 2498 2499 2500## v2.10.4 (2016-08-25) 2501 2502 2503#### Bug Fixes 2504 2505* **Help Wrapping:** fixes a bug where help is wrapped incorrectly and causing a panic with some non-English characters ([d0b442c7](https://github.com/clap-rs/clap/commit/d0b442c7beeecac9764406bc3bd171ced0b8825e), closes [#626](https://github.com/clap-rs/clap/issues/626)) 2506 2507 2508 2509## v2.10.3 (2016-08-25) 2510 2511#### Features 2512 2513* **Help:** adds new short hand way to use source formatting and ignore term width in help messages ([7dfdaf20](https://github.com/clap-rs/clap/commit/7dfdaf200ebb5c431351a045b48f5e0f0d3f31db), closes [#625](https://github.com/clap-rs/clap/issues/625)) 2514 2515#### Documentation 2516 2517* **Term Width:** adds details about set_term_width(0) ([00b8205d](https://github.com/clap-rs/clap/commit/00b8205d22639d1b54b9c453c55c785aace52cb2)) 2518 2519#### Bug Fixes 2520 2521* **Unicode:** fixes two bugs where non-English characters were stripped or caused a panic with help wrapping ([763a5c92](https://github.com/clap-rs/clap/commit/763a5c920e23efc74d190af0cb8b5dd714b2d67a), closes [#626](https://github.com/clap-rs/clap/issues/626)) 2522 2523 2524 2525## v2.10.2 (2016-08-22) 2526 2527 2528#### Bug Fixes 2529 2530* fixes a bug where the help is printed twice ([a643fb28](https://github.com/clap-rs/clap/commit/a643fb283acd9905dc727c4579c5c9fa2ceaa7e7), closes [#623](https://github.com/clap-rs/clap/issues/623)) 2531 2532 2533 2534## v2.10.1 (2016-08-21) 2535 2536 2537#### Bug Fixes 2538 2539* **Help Subcommand:** fixes misleading usage string when using multi-level subcommmands ([e203515e](https://github.com/clap-rs/clap/commit/e203515e3ac495b405dbba4f78fb6af148fd282e), closes [#618](https://github.com/clap-rs/clap/issues/618)) 2540 2541#### Features 2542 2543* **YAML:** allows using lists or single values with arg declarations ([9ade2cd4](https://github.com/clap-rs/clap/commit/9ade2cd4b268d6d7fe828319ce6a523c641b9c38), closes [#614](https://github.com/clap-rs/clap/issues/614), [#613](https://github.com/clap-rs/clap/issues/613)) 2544 2545 2546 2547## v2.10.0 (2016-07-29) 2548 2549 2550#### Features 2551 2552* **Completions:** one can generate a basic fish completions script at compile time ([1979d2f2](https://github.com/clap-rs/clap/commit/1979d2f2f3216e57d02a97e624a8a8f6cf867ed9)) 2553 2554#### Bug Fixes 2555 2556* **parser:** preserve external subcommand name ([875df243](https://github.com/clap-rs/clap/commit/875df24316c266920a073c13bbefbf546bc1f635)) 2557 2558#### Breaking Changes 2559 2560* **parser:** preserve external subcommand name ([875df243](https://github.com/clap-rs/clap/commit/875df24316c266920a073c13bbefbf546bc1f635)) 2561 2562#### Documentation 2563 2564* **YAML:** fixes example 17's incorrect reference to arg_groups instead of groups ([b6c99e13](https://github.com/clap-rs/clap/commit/b6c99e1377f918e78c16c8faced70a71607da931), closes [#601](https://github.com/clap-rs/clap/issues/601)) 2565 2566 2567 2568### 2.9.3 (2016-07-24) 2569 2570 2571#### Bug Fixes 2572 2573* fixes bug where only first arg in list of required_unless_one is recognized ([1fc3b55b](https://github.com/clap-rs/clap/commit/1fc3b55bd6c8653b02e7c4253749c6b77737d2ac), closes [#575](https://github.com/clap-rs/clap/issues/575)) 2574* **Settings:** fixes typo subcommandsrequired->subcommandrequired ([fc72cdf5](https://github.com/clap-rs/clap/commit/fc72cdf591d30f5d9375d0b5cc2a2ff3e812f9f6), closes [#593](https://github.com/clap-rs/clap/issues/593)) 2575 2576#### Features 2577 2578* **Completions:** adds the ability to generate completions to io::Write object ([9f62cf73](https://github.com/clap-rs/clap/commit/9f62cf7378ba5acb5ce8c5bac89b4aa60c30755f)) 2579* **Settings:** Add unset_setting and unset_settings fns to App (#598) ([0ceba231](https://github.com/clap-rs/clap/commit/0ceba231c6767cd6d88fdb1feeeea41deadf77ff), closes [#590](https://github.com/clap-rs/clap/issues/590)) 2580 2581 2582### 2.9.2 (2016-07-03) 2583 2584 2585#### Documentation 2586 2587* **Completions:** fixes the formatting of the Cargo.toml excerpt in the completions example ([722f2607](https://github.com/clap-rs/clap/commit/722f2607beaef56b6a0e433db5fd09492d9f028c)) 2588 2589#### Bug Fixes 2590 2591* **Completions:** fixes bug where --help and --version short weren't added to the completion list ([e9f2438e](https://github.com/clap-rs/clap/commit/e9f2438e2ce99af0ae570a2eaf541fc7f55b771b), closes [#536](https://github.com/clap-rs/clap/issues/536)) 2592 2593 2594 2595### 2.9.1 (2016-07-02) 2596 2597 2598#### Improvements 2599 2600* **Completions:** allows multiple completions to be built by namespacing with bin name ([57484b2d](https://github.com/clap-rs/clap/commit/57484b2daeaac01c1026e8c84efc8bf099e0eb31)) 2601 2602 2603## v2.9.0 (2016-07-01) 2604 2605 2606#### Documentation 2607 2608* **Completions:** 2609 * fixes some errors in the completion docs ([9b359bf0](https://github.com/clap-rs/clap/commit/9b359bf06255d3dad8f489308044b60a9d1e6a87)) 2610 * adds documentation for completion scripts ([c6c519e4](https://github.com/clap-rs/clap/commit/c6c519e40efd6c4533a9ef5efe8e74fd150391b7)) 2611 2612#### Features 2613 2614* **Completions:** 2615 * one can now generate a bash completions script at compile time! ([e75b6c7b](https://github.com/clap-rs/clap/commit/e75b6c7b75f729afb9eb1d2a2faf61dca7674634), closes [#376](https://github.com/clap-rs/clap/issues/376)) 2616 * completions now include aliases to subcommands, including all subcommand options ([0ab9f840](https://github.com/clap-rs/clap/commit/0ab9f84052a8cf65b5551657f46c0c270841e634), closes [#556](https://github.com/clap-rs/clap/issues/556)) 2617 * completions now continue completing even after first completion ([18fc2e5b](https://github.com/clap-rs/clap/commit/18fc2e5b5af63bf54a94b72cec5e1223d49f4806)) 2618 * allows matching on possible values in options ([89cc2026](https://github.com/clap-rs/clap/commit/89cc2026ba9ac69cf44c5254360bbf99236d4f89), closes [#557](https://github.com/clap-rs/clap/issues/557)) 2619 2620#### Bug Fixes 2621 2622* **AllowLeadingHyphen:** fixes an issue where isn't ignored like it should be with this setting ([96c24c9a](https://github.com/clap-rs/clap/commit/96c24c9a8fa1f85e06138d3cdd133e51659e19d2), closes [#558](https://github.com/clap-rs/clap/issues/558)) 2623 2624## v2.8.0 (2016-06-30) 2625 2626 2627#### Features 2628 2629* **Arg:** adds new setting `Arg::require_delimiter` which requires val delimiter to parse multiple values ([920b5595](https://github.com/clap-rs/clap/commit/920b5595ed72abfb501ce054ab536067d8df2a66)) 2630 2631#### Bug Fixes 2632 2633* Declare term::Winsize as repr(C) ([5d663d90](https://github.com/clap-rs/clap/commit/5d663d905c9829ce6e7a164f1f0896cdd70236dd)) 2634 2635#### Documentation 2636 2637* **Arg:** adds docs for ([49af4e38](https://github.com/clap-rs/clap/commit/49af4e38a5dae2ab0a7fc3b4147e2c053d532484)) 2638 2639 2640 2641## v2.7.1 (2016-06-29) 2642 2643 2644#### Bug Fixes 2645 2646* **Options:** 2647 * options with multiple values and using delimiters no longer parse additional values after a trailing space ([cdc500bd](https://github.com/clap-rs/clap/commit/cdc500bdde6abe238c36ade406ddafc2bafff583)) 2648 * using options with multiple values and with an = no longer parse args after the trailing space as values ([290f61d0](https://github.com/clap-rs/clap/commit/290f61d07177413cf082ada55526d83405f6d011)) 2649 2650 2651 2652## v2.7.0 (2016-06-28) 2653 2654 2655#### Documentation 2656 2657* fix typos ([43b3d40b](https://github.com/clap-rs/clap/commit/43b3d40b8c38b1571da75af86b5088be96cccec2)) 2658* **ArgGroup:** vastly improves ArgGroup docs by adding better examples ([9e5f4f5d](https://github.com/clap-rs/clap/commit/9e5f4f5d734d630bca5535c3a0aa4fd4f9db3e39), closes [#534](https://github.com/clap-rs/clap/issues/534)) 2659 2660#### Features 2661 2662* **ArgGroup:** one can now specify groups which require AT LEAST one of the args ([33689acc](https://github.com/clap-rs/clap/commit/33689acc689b217a8c0ee439f1b1225590c38355), closes [#533](https://github.com/clap-rs/clap/issues/533)) 2663 2664#### Bug Fixes 2665 2666* **App:** using `App::print_help` now prints the same as would have been printed by `--help` or the like ([e84cc018](https://github.com/clap-rs/clap/commit/e84cc01836bbe0527e97de6db9889bd9e0fd6ba1), closes [#536](https://github.com/clap-rs/clap/issues/536)) 2667* **Help:** 2668 * prevents invoking <cmd> help help and displaying incorrect help message ([e3d2893f](https://github.com/clap-rs/clap/commit/e3d2893f377942a2d4cf3c6ff04524d0346e6fdb), closes [#538](https://github.com/clap-rs/clap/issues/538)) 2669 * subcommand help messages requested via <cmd> help <sub> now correctly match <cmd> <sub> --help ([08ad1cff](https://github.com/clap-rs/clap/commit/08ad1cff4fec57224ea957a2891a057b323c01bc), closes [#539](https://github.com/clap-rs/clap/issues/539)) 2670 2671#### Improvements 2672 2673* **ArgGroup:** Add multiple ArgGroups per Arg ([902e182f](https://github.com/clap-rs/clap/commit/902e182f7a58aff11ff01e0a452abcdbdb2262aa), closes [#426](https://github.com/clap-rs/clap/issues/426)) 2674* **Usage Strings:** `[FLAGS]` and `[ARGS]` are no longer blindly added to usage strings ([9b2e45b1](https://github.com/clap-rs/clap/commit/9b2e45b170aff567b038d8b3368880b6046c10c6), closes [#537](https://github.com/clap-rs/clap/issues/537)) 2675* **arg_enum!:** allows using meta items like repr(C) with arg_enum!s ([edf9b233](https://github.com/clap-rs/clap/commit/edf9b2331c17a2cbcc13f961add4c55c2778e773), closes [#543](https://github.com/clap-rs/clap/issues/543)) 2676 2677 2678 2679## v2.6.0 (2016-06-14) 2680 2681 2682#### Improvements 2683 2684* removes extra newline from help output ([86e61d19](https://github.com/clap-rs/clap/commit/86e61d19a748fb9870fcf1175308984e51ca1115)) 2685* allows printing version to any io::Write object ([921f5f79](https://github.com/clap-rs/clap/commit/921f5f7916597f1d028cd4a65bfe76a01c801724)) 2686* removes extra newline when printing version ([7e2e2cbb](https://github.com/clap-rs/clap/commit/7e2e2cbb4a8a0f050bb8072a376f742fc54b8589)) 2687* **Aliases:** improves readability of asliases in help messages ([ca511de7](https://github.com/clap-rs/clap/commit/ca511de71f5b8c2ac419f1b188658e8c63b67846), closes [#526](https://github.com/clap-rs/clap/issues/526), [#529](https://github.com/clap-rs/clap/issues/529)) 2688* **Usage Strings:** improves the default usage string when only a single positional arg is present ([ec86f2da](https://github.com/clap-rs/clap/commit/ec86f2dada1545a63fc72355e22fcdc4c466c215), closes [#518](https://github.com/clap-rs/clap/issues/518)) 2689 2690#### Features 2691 2692* **Help:** allows wrapping at specified term width (Even on Windows!) ([1761dc0d](https://github.com/clap-rs/clap/commit/1761dc0d27d0d621229d792be40c36fbf65c3014), closes [#451](https://github.com/clap-rs/clap/issues/451)) 2693* **Settings:** 2694 * adds new setting to stop delimiting values with -- or TrailingVarArg ([fc3e0f5a](https://github.com/clap-rs/clap/commit/fc3e0f5afda6d24cdb3c4676614beebe13e1e870), closes [#511](https://github.com/clap-rs/clap/issues/511)) 2695 * one can now set an AppSetting which is propagated down through child subcommands ([e2341835](https://github.com/clap-rs/clap/commit/e23418351a3b98bf08dfd7744bc14377c70d59ee), closes [#519](https://github.com/clap-rs/clap/issues/519)) 2696* **Subcommands:** adds support for visible aliases ([7b10e7f8](https://github.com/clap-rs/clap/commit/7b10e7f8937a07fdb8d16a6d8df79ce78d080cd3), closes [#522](https://github.com/clap-rs/clap/issues/522)) 2697 2698#### Bug Fixes 2699 2700* fixes bug where args are printed out of order with templates ([05abb534](https://github.com/clap-rs/clap/commit/05abb534864764102031a0d402e64ac65867aa87)) 2701* fixes bug where one can't override version or help flags ([90d7d6a2](https://github.com/clap-rs/clap/commit/90d7d6a2ea8240122dd9bf8d82d3c4f5ebb5c703), closes [#514](https://github.com/clap-rs/clap/issues/514)) 2702* fixes issue where before_help wasn't printed ([b3faff60](https://github.com/clap-rs/clap/commit/b3faff6030f76a23f26afcfa6a90169002ed7106)) 2703* **Help:** `App::before_help` and `App::after_help` now correctly wrap ([1f4da767](https://github.com/clap-rs/clap/commit/1f4da7676e6e71aa8dda799f3eeefad105a47819), closes [#516](https://github.com/clap-rs/clap/issues/516)) 2704* **Settings:** fixes bug where new color settings couldn't be converted from strs ([706a7c11](https://github.com/clap-rs/clap/commit/706a7c11b0900be594de6d5a3121938eff197602)) 2705* **Subcommands:** subcommands with aliases now display help of the aliased subcommand ([5354d14b](https://github.com/clap-rs/clap/commit/5354d14b51f189885ba110e01e6b76cca3752992), closes [#521](https://github.com/clap-rs/clap/issues/521)) 2706* **Windows:** fixes a failing windows build ([01e7dfd6](https://github.com/clap-rs/clap/commit/01e7dfd6c07228c0be6695b3c7bf9370d82860d4)) 2707* **YAML:** adds missing YAML methods for App and Arg ([e468faf3](https://github.com/clap-rs/clap/commit/e468faf3f05950fd9f72d84b69aa2061e91c6c64), closes [#528](https://github.com/clap-rs/clap/issues/528)) 2708 2709 2710 2711## v2.5.2 (2016-05-31) 2712 2713 2714#### Improvements 2715 2716* removes extra newline from help output ([86e61d19](https://github.com/clap-rs/clap/commit/86e61d19a748fb9870fcf1175308984e51ca1115)) 2717* allows printing version to any io::Write object ([921f5f79](https://github.com/clap-rs/clap/commit/921f5f7916597f1d028cd4a65bfe76a01c801724)) 2718* removes extra newline when printing version ([7e2e2cbb](https://github.com/clap-rs/clap/commit/7e2e2cbb4a8a0f050bb8072a376f742fc54b8589)) 2719 2720#### Bug Fixes 2721 2722* fixes bug where args are printed out of order with templates ([3935431d](https://github.com/clap-rs/clap/commit/3935431d5633f577c0826ae2142794b301f4b8ca)) 2723* fixes bug where one can't override version or help flags ([90d7d6a2](https://github.com/clap-rs/clap/commit/90d7d6a2ea8240122dd9bf8d82d3c4f5ebb5c703), closes [#514](https://github.com/clap-rs/clap/issues/514)) 2724* fixes issue where before_help wasn't printed ([b3faff60](https://github.com/clap-rs/clap/commit/b3faff6030f76a23f26afcfa6a90169002ed7106)) 2725 2726#### Documentation 2727 2728* inter-links all types and pages ([3312893d](https://github.com/clap-rs/clap/commit/3312893ddaef3f44d68d8d26ed3d08010be50d97), closes [#505](https://github.com/clap-rs/clap/issues/505)) 2729* makes all publicly available types viewable in docs ([52ca6505](https://github.com/clap-rs/clap/commit/52ca6505b4fec7b5c2d53d160c072d395eb21da6)) 2730 2731## v2.5.1 (2016-05-11) 2732 2733 2734#### Bug Fixes 2735 2736* **Subcommand Aliases**: fixes lifetime issue when setting multiple aliases at once ([ac42f6cf0](https://github.com/clap-rs/clap/commit/ac42f6cf0de6c4920f703807d63061803930b18d)) 2737 2738## v2.5.0 (2016-05-10) 2739 2740 2741#### Improvements 2742 2743* **SubCommand Aliases:** adds feature to yaml configs too ([69592195](https://github.com/clap-rs/clap/commit/695921954dde46dfd483399dcdef482c9dd7f34a)) 2744 2745#### Features 2746 2747* **SubCommands:** adds support for subcommand aliases ([66b4dea6](https://github.com/clap-rs/clap/commit/66b4dea65c44d8f77ff522238a9237aed1bcab6d), closes [#469](https://github.com/clap-rs/clap/issues/469)) 2748 2749 2750## v2.4.3 (2016-05-10) 2751 2752 2753#### Bug Fixes 2754 2755* **Usage Strings:** 2756 * now properly dedups args that are also in groups ([3ca0947c](https://github.com/clap-rs/clap/commit/3ca0947c166b4f8525752255e3a4fa6565eb9689), closes [#498](https://github.com/clap-rs/clap/issues/498)) 2757 * removes duplicate groups from usage strings ([f574fb8a](https://github.com/clap-rs/clap/commit/f574fb8a7cde4d4a2fa4c4481d59be2d0f135427)) 2758 2759#### Improvements 2760 2761* **Groups:** formats positional args in groups in a better way ([fef11154](https://github.com/clap-rs/clap/commit/fef11154fb7430d1cbf04a672aabb366e456a368)) 2762* **Help:** 2763 * moves positionals to standard <> formatting ([03dfe5ce](https://github.com/clap-rs/clap/commit/03dfe5ceff1d63f172788ff688567ddad9fe119b)) 2764 * default help subcommand string has been shortened ([5b7fe8e4](https://github.com/clap-rs/clap/commit/5b7fe8e4161e43ab19e2e5fcf55fbe46791134e9), closes [#494](https://github.com/clap-rs/clap/issues/494)) 2765 2766## v2.4.3 (2016-05-10) 2767 2768* Ghost Release 2769 2770## v2.4.3 (2016-05-10) 2771 2772* Ghost Release 2773 2774## v2.4.0 (2016-05-02) 2775 2776 2777#### Features 2778 2779* **Help:** adds support for displaying info before help message ([29fbfa3b](https://github.com/clap-rs/clap/commit/29fbfa3b963f2f3ca7704bf5d3e1201531baa373)) 2780* **Required:** adds allowing args that are required unless certain args are present ([af1f7916](https://github.com/clap-rs/clap/commit/af1f79168390ea7da4074d0d9777de458ea64971)) 2781 2782#### Documentation 2783 2784* hides formatting from docs ([cb708093](https://github.com/clap-rs/clap/commit/cb708093a7cd057f08c98b7bd1ed54c2db86ae7e)) 2785* **required_unless:** adds docs and examples for required_unless ([ca727b52](https://github.com/clap-rs/clap/commit/ca727b52423b9883acd88b2f227b2711bc144573)) 2786 2787#### Bug Fixes 2788 2789* **Required Args:** fixes issue where missing required args are sometimes duplicated in error messages ([3beebd81](https://github.com/clap-rs/clap/commit/3beebd81e7bc2faa4115ac109cf570e512c5477f), closes [#492](https://github.com/clap-rs/clap/issues/492)) 2790 2791 2792## v2.3.0 (2016-04-18) 2793 2794 2795#### Improvements 2796 2797* **macros.rs:** Added write_nspaces macro (a new version of write_spaces) ([9d757e86](https://github.com/clap-rs/clap/commit/9d757e8678e334e5a740ac750c76a9ed4e785cba)) 2798* **parser.rs:** 2799 * Provide a way to create a usage string without the USAGE: title ([a91d378b](https://github.com/clap-rs/clap/commit/a91d378ba0c91b5796457f8c6e881b13226ab735)) 2800 * Make Parser's create_usage public allowing to have function outside the parser to generate the help ([d51945f8](https://github.com/clap-rs/clap/commit/d51945f8b82ebb0963f4f40b384a9e8335783091)) 2801 * Expose Parser's flags, opts and positionals argument as iterators ([9b23e7ee](https://github.com/clap-rs/clap/commit/9b23e7ee40e51f7a823644c4496be955dc6c9d3a)) 2802* **src/args:** Exposes argument display order by introducing a new Trait ([1321630e](https://github.com/clap-rs/clap/commit/1321630ef56955f152c73376d4d85cceb0bb4a12)) 2803* **srs/args:** Added longest_filter to AnyArg trait ([65b3f667](https://github.com/clap-rs/clap/commit/65b3f667532685f854c699ddd264d326599cf7e5)) 2804 2805#### Features 2806 2807* **Authors Macro:** adds a crate_authors macro ([38fb59ab](https://github.com/clap-rs/clap/commit/38fb59abf480eb2b6feca269097412f8b00b5b54), closes [#447](https://github.com/clap-rs/clap/issues/447)) 2808* **HELP:** 2809 * implements optional colored help messages ([abc8f669](https://github.com/clap-rs/clap/commit/abc8f669c3c8193ffc3a3b0ac6c3ac2198794d4f), closes [#483](https://github.com/clap-rs/clap/issues/483)) 2810 * Add a Templated Help system. ([81e121ed](https://github.com/clap-rs/clap/commit/81e121edd616f7285593f11120c63bcccae0d23e)) 2811 2812#### Bug Fixes 2813 2814* **HELP:** Adjust Help to semantic changes introduced in 6933b84 ([8d23806b](https://github.com/clap-rs/clap/commit/8d23806bd67530ad412c34a1dcdcb1435555573d)) 2815 2816## v2.2.6 (2016-04-11) 2817 2818#### Bug Fixes 2819 2820* **Arg Groups**: fixes bug where arg name isn't printed properly ([3019a685](https://github.com/clap-rs/clap/commit/3019a685eee747ccbe6be09ad5dddce0b1d1d4db), closes [#476](https://github.com/clap-rs/clap/issues/476)) 2821 2822 2823## v2.2.5 (2016-04-03) 2824 2825 2826#### Bug Fixes 2827 2828* **Empty Values:** fixes bug where empty values weren't stored ([885d166f](https://github.com/clap-rs/clap/commit/885d166f04eb3fb581898ae5818c6c8032e5a686), closes [#470](https://github.com/clap-rs/clap/issues/470)) 2829* **Help Message:** fixes bug where arg name is printed twice ([71acf1d5](https://github.com/clap-rs/clap/commit/71acf1d576946658b8bbdb5ae79e6716c43a030f), closes [#472](https://github.com/clap-rs/clap/issues/472)) 2830 2831 2832## v2.2.4 (2016-03-30) 2833 2834 2835#### Bug Fixes 2836 2837* fixes compiling with debug cargo feature ([d4b55450](https://github.com/clap-rs/clap/commit/d4b554509928031ac0808076178075bb21f8c1da)) 2838* **Empty Values:** fixes bug where empty values weren't stored ([885d166f](https://github.com/clap-rs/clap/commit/885d166f04eb3fb581898ae5818c6c8032e5a686), closes [#470](https://github.com/clap-rs/clap/issues/470)) 2839 2840 2841 2842## v2.2.3 (2016-03-28) 2843 2844 2845#### Bug Fixes 2846 2847* **Help Subcommand:** fixes issue where help and version flags weren't properly displayed ([205b07bf](https://github.com/clap-rs/clap/commit/205b07bf2e6547851f1290f8cd6b169145e144f1), closes [#466](https://github.com/clap-rs/clap/issues/466)) 2848 2849## v2.2.2 (2016-03-27) 2850 2851 2852#### Bug Fixes 2853 2854* **Help Message:** fixes bug with wrapping in the middle of a unicode sequence ([05365ddc](https://github.com/clap-rs/clap/commit/05365ddcc252e4b49e7a75e199d6001a430bd84d), closes [#456](https://github.com/clap-rs/clap/issues/456)) 2855* **Usage Strings:** fixes small bug where -- would appear needlessly in usage strings ([6933b849](https://github.com/clap-rs/clap/commit/6933b8491c2a7e28cdb61b47dcf10caf33c2f78a), closes [#461](https://github.com/clap-rs/clap/issues/461)) 2856 2857 2858### 2.2.1 (2016-03-16) 2859 2860 2861#### Features 2862 2863* **Help Message:** wraps and aligns the help message of subcommands ([813d75d0](https://github.com/clap-rs/clap/commit/813d75d06fbf077c65762608c0fa5e941cfc393c), closes [#452](https://github.com/clap-rs/clap/issues/452)) 2864 2865#### Bug Fixes 2866 2867* **Help Message:** fixes a bug where small terminal sizes causing a loop ([1d73b035](https://github.com/clap-rs/clap/commit/1d73b0355236923aeaf6799abc759762ded7e1d0), closes [#453](https://github.com/clap-rs/clap/issues/453)) 2868 2869 2870## v2.2.0 (2016-03-15) 2871 2872 2873#### Features 2874 2875* **Help Message:** can auto wrap and aligning help text to term width ([e36af026](https://github.com/clap-rs/clap/commit/e36af0266635f23e85e951b9088d561e9a5d1bf6), closes [#428](https://github.com/clap-rs/clap/issues/428)) 2876* **Help Subcommand:** adds support passing additional subcommands to help subcommand ([2c12757b](https://github.com/clap-rs/clap/commit/2c12757bbdf34ce481f3446c074e24c09c2e60fd), closes [#416](https://github.com/clap-rs/clap/issues/416)) 2877* **Opts and Flags:** adds support for custom ordering in help messages ([9803b51e](https://github.com/clap-rs/clap/commit/9803b51e799904c0befaac457418ee766ccc1ab9)) 2878* **Settings:** adds support for automatically deriving custom display order of args ([ad86e433](https://github.com/clap-rs/clap/commit/ad86e43334c4f70e86909689a088fb87e26ff95a), closes [#444](https://github.com/clap-rs/clap/issues/444)) 2879* **Subcommands:** adds support for custom ordering in help messages ([7d2a2ed4](https://github.com/clap-rs/clap/commit/7d2a2ed413f5517d45988eef0765cdcd663b6372), closes [#442](https://github.com/clap-rs/clap/issues/442)) 2880 2881#### Bug Fixes 2882 2883* **From Usage:** fixes a bug where adding empty lines weren't ignored ([c5c58c86](https://github.com/clap-rs/clap/commit/c5c58c86b9c503d8de19da356a5a5cffb59fbe84)) 2884 2885#### Documentation 2886 2887* **Groups:** explains required ArgGroups better ([4ff0205b](https://github.com/clap-rs/clap/commit/4ff0205b85a45151b59bbaf090a89df13438380f), closes [#439](https://github.com/clap-rs/clap/issues/439)) 2888 2889## v2.1.2 (2016-02-24) 2890 2891#### Bug Fixes 2892 2893* **Nightly:** fixes failing nightly build ([d752c170](https://github.com/clap-rs/clap/commit/d752c17029598b19037710f204b7943f0830ae75), closes [#434](https://github.com/clap-rs/clap/issues/434)) 2894 2895 2896## v2.1.1 (2016-02-19) 2897 2898 2899#### Documentation 2900 2901* **AppSettings:** clarifies that AppSettings do not propagate ([3c8db0e9](https://github.com/clap-rs/clap/commit/3c8db0e9be1d24edaad364359513cbb02abb4186), closes [#429](https://github.com/clap-rs/clap/issues/429)) 2902* **Arg Examples:** adds better examples ([1e79cccc](https://github.com/clap-rs/clap/commit/1e79cccc12937bc0e7cd2aad8e404410798e9fff)) 2903 2904#### Improvements 2905 2906* **Help:** adds setting for next line help by arg ([066df748](https://github.com/clap-rs/clap/commit/066df7486e684cf50a8479a356a12ba972c34ce1), closes [#427](https://github.com/clap-rs/clap/issues/427)) 2907 2908 2909## v2.1.0 (2016-02-10) 2910 2911 2912#### Features 2913 2914* **Default Values:** adds support for default values in args ([73211952](https://github.com/clap-rs/clap/commit/73211952964a79d97b434dd567e6d7d34be7feb5), closes [#418](https://github.com/clap-rs/clap/issues/418)) 2915 2916#### Documentation 2917 2918* **Default Values:** adds better examples and notes for default values ([9facd74f](https://github.com/clap-rs/clap/commit/9facd74f843ef3807c5d35259558a344e6c25905)) 2919 2920 2921## v2.0.6 (2016-02-09) 2922 2923 2924#### Improvements 2925 2926* **Positional Arguments:** now displays value name if appropriate ([f0a99916](https://github.com/clap-rs/clap/commit/f0a99916c59ce675515c6dcdfe9a40b130510908), closes [#420](https://github.com/clap-rs/clap/issues/420)) 2927 2928 2929## v2.0.5 (2016-02-05) 2930 2931 2932#### Bug Fixes 2933 2934* **Multiple Values:** fixes bug where number_of_values wasn't respected ([72c387da](https://github.com/clap-rs/clap/commit/72c387da0bb8a6f526f863770f08bb8ca0d3de03)) 2935 2936 2937## v2.0.4 (2016-02-04) 2938 2939 2940#### Bug Fixes 2941 2942* adds support for building ArgGroups from standalone YAML ([fcbc7e12](https://github.com/clap-rs/clap/commit/fcbc7e12f5d7b023b8f30cba8cad28a01cf6cd26)) 2943* Stop lonely hyphens from causing panic ([85b11468](https://github.com/clap-rs/clap/commit/85b11468b0189d5cc15f1cfac5db40d17a0077dc), closes [#410](https://github.com/clap-rs/clap/issues/410)) 2944* **AppSettings:** fixes bug where subcmds didn't receive parent ver ([a62e4527](https://github.com/clap-rs/clap/commit/a62e452754b3b0e3ac9a15aa8b5330636229ead1)) 2945 2946## v2.0.3 (2016-02-02) 2947 2948 2949#### Improvements 2950 2951* **values:** adds support for up to u64::max values per arg ([c7abf7d7](https://github.com/clap-rs/clap/commit/c7abf7d7611e317b0d31d97632e3d2e13570947c)) 2952* **occurrences:** Allow for more than 256 occurrences of an argument. ([3731ddb3](https://github.com/clap-rs/clap/commit/3731ddb361163f3d6b86844362871e48c80fa530)) 2953 2954#### Features 2955 2956* **AppSettings:** adds HidePossibleValuesInHelp to skip writing those values ([cdee7a0e](https://github.com/clap-rs/clap/commit/cdee7a0eb2beeec723cb98acfacf03bf629c1da3)) 2957 2958#### Bug Fixes 2959 2960* **value_t_or_exit:** fixes typo which causes value_t_or_exit to return a Result ([ee96baff](https://github.com/clap-rs/clap/commit/ee96baffd306cb8d20ddc5575cf739bb1a6354e8)) 2961 2962 2963## v2.0.2 (2016-01-31) 2964 2965 2966#### Improvements 2967 2968* **arg_enum:** enum declared with arg_enum returns [&'static str; #] instead of Vec ([9c4b8a1a](https://github.com/clap-rs/clap/commit/9c4b8a1a6b12949222f17d1074578ad7676b9c0d)) 2969 2970#### Bug Fixes 2971 2972* clap_app! should be gated by unstable, not nightly feature ([0c8b84af](https://github.com/clap-rs/clap/commit/0c8b84af6161d5baf683688eafc00874846f83fa)) 2973* **SubCommands:** fixed where subcmds weren't recognized after mult args ([c19c17a8](https://github.com/clap-rs/clap/commit/c19c17a8850602990e24347aeb4427cf43316223), closes [#405](https://github.com/clap-rs/clap/issues/405)) 2974* **Usage Parser:** fixes a bug where literal single quotes weren't allowed in help strings ([0bcc7120](https://github.com/clap-rs/clap/commit/0bcc71206478074769e311479b34a9f74fe80f5c), closes [#406](https://github.com/clap-rs/clap/issues/406)) 2975 2976 2977## v2.0.1 (2016-01-30) 2978 2979 2980#### Bug Fixes 2981 2982* fixes cargo features to NOT require nightly with unstable features ([dcbcc60c](https://github.com/clap-rs/clap/commit/dcbcc60c9ba17894be636472ea4b07a82d86a9db), closes [#402](https://github.com/clap-rs/clap/issues/402)) 2983 2984 2985## v2.0.0 (2016-01-28) 2986 2987 2988#### Improvements 2989 2990* **From Usage:** vastly improves the usage parser ([fa3a2f86](https://github.com/clap-rs/clap/commit/fa3a2f86bd674c5eb07128c95098fab7d1437247), closes [#350](https://github.com/clap-rs/clap/issues/350)) 2991 2992#### Features 2993 2994* adds support for external subcommands ([177fe5cc](https://github.com/clap-rs/clap/commit/177fe5cce745c2164a8e38c23be4c4460d2d7211), closes [#372](https://github.com/clap-rs/clap/issues/372)) 2995* adds support values with a leading hyphen ([e4d429b9](https://github.com/clap-rs/clap/commit/e4d429b9d52e95197bd0b572d59efacecf305a59), closes [#385](https://github.com/clap-rs/clap/issues/385)) 2996* adds support for turning off the value delimiter ([508db850](https://github.com/clap-rs/clap/commit/508db850a87c2e251cf6b6ddead9ad56b29f9e57), closes [#352](https://github.com/clap-rs/clap/issues/352)) 2997* adds support changing the value delimiter ([dafeae8a](https://github.com/clap-rs/clap/commit/dafeae8a526162640f6a68da434370c64d190889), closes [#353](https://github.com/clap-rs/clap/issues/353)) 2998* adds support for comma separated values ([e69da6af](https://github.com/clap-rs/clap/commit/e69da6afcd2fe48a3c458ca031db40997f860eda), closes [#348](https://github.com/clap-rs/clap/issues/348)) 2999* adds support with options with optional values ([4555736c](https://github.com/clap-rs/clap/commit/4555736cad01441dcde4ea84a285227e0844c16e), closes [#367](https://github.com/clap-rs/clap/issues/367)) 3000* **UTF-8:** adds support for invalid utf8 in values ([c5c59dec](https://github.com/clap-rs/clap/commit/c5c59dec0bc33b86b2e99d30741336f17ec84282), closes [#269](https://github.com/clap-rs/clap/issues/269)) 3001* **v2:** implementing the base of 2.x ([a3536054](https://github.com/clap-rs/clap/commit/a3536054512ba833533dc56615ce3663d884381c)) 3002 3003#### Bug Fixes 3004 3005* fixes nightly build with new lints ([17599195](https://github.com/clap-rs/clap/commit/175991956c37dc83ba9c49396e927a1cb65c5b11)) 3006* fixes Windows build for 2x release ([674c9b48](https://github.com/clap-rs/clap/commit/674c9b48c7c92079cb180cc650a9e39f34781c32), closes [#392](https://github.com/clap-rs/clap/issues/392)) 3007* fixes yaml build for 2x base ([adceae64](https://github.com/clap-rs/clap/commit/adceae64c8556d00ab715677377b216f9f468ad7)) 3008 3009#### Documentation 3010 3011* updates examples for 2x release ([1303b360](https://github.com/clap-rs/clap/commit/1303b3607468f362ab1b452d5614c1a064dc69b4), closes [#394](https://github.com/clap-rs/clap/issues/394)) 3012* updates examples for 2x release ([0a011f31](https://github.com/clap-rs/clap/commit/0a011f3142aec338d388a6c8bfe22fa7036021bb), closes [#394](https://github.com/clap-rs/clap/issues/394)) 3013* updates documentation for v2 release ([8d51724e](https://github.com/clap-rs/clap/commit/8d51724ef73dfde5bb94fb9466bc5463a1cc1502)) 3014* updating docs for 2x release ([576d0e0e](https://github.com/clap-rs/clap/commit/576d0e0e2c7b8f386589179bbf7419b93abacf1c)) 3015* **README.md:** 3016 * updates readme for v2 release ([acaba01a](https://github.com/clap-rs/clap/commit/acaba01a353c12144b9cd9a3ce447400691849b0), closes [#393](https://github.com/clap-rs/clap/issues/393)) 3017 * fix typo and make documentation conspicuous ([07b9f614](https://github.com/clap-rs/clap/commit/07b9f61495d927f69f7abe6c0d85253f0f4e6107)) 3018 3019#### BREAKING CHANGES 3020 3021* **Fewer lifetimes! Yay!** 3022 * `App<'a, 'b, 'c, 'd, 'e, 'f>` => `App<'a, 'b>` 3023 * `Arg<'a, 'b, 'c, 'd, 'e, 'f>` => `Arg<'a, 'b>` 3024 * `ArgMatches<'a, 'b>` => `ArgMatches<'a>` 3025* **Simply Renamed** 3026 * `App::arg_group` => `App::group` 3027 * `App::arg_groups` => `App::groups` 3028 * `ArgGroup::add` => `ArgGroup::arg` 3029 * `ArgGroup::add_all` => `ArgGroup::args` 3030 * `ClapError` => `Error` 3031 * struct field `ClapError::error_type` => `Error::kind` 3032 * `ClapResult` => `Result` 3033 * `ClapErrorType` => `ErrorKind` 3034* **Removed Deprecated Functions and Methods** 3035 * `App::subcommands_negate_reqs` 3036 * `App::subcommand_required` 3037 * `App::arg_required_else_help` 3038 * `App::global_version(bool)` 3039 * `App::versionless_subcommands` 3040 * `App::unified_help_messages` 3041 * `App::wait_on_error` 3042 * `App::subcommand_required_else_help` 3043 * `SubCommand::new` 3044 * `App::error_on_no_subcommand` 3045 * `Arg::new` 3046 * `Arg::mutually_excludes` 3047 * `Arg::mutually_excludes_all` 3048 * `Arg::mutually_overrides_with` 3049 * `simple_enum!` 3050* **Renamed Error Variants** 3051 * `InvalidUnicode` => `InvalidUtf8` 3052 * `InvalidArgument` => `UnknownArgument` 3053* **Usage Parser** 3054 * Value names can now be specified inline, i.e. `-o, --option <FILE> <FILE2> 'some option which takes two files'` 3055 * **There is now a priority of order to determine the name** - This is perhaps the biggest breaking change. See the documentation for full details. Prior to this change, the value name took precedence. **Ensure your args are using the proper names (i.e. typically the long or short and NOT the value name) throughout the code** 3056* `ArgMatches::values_of` returns an `Values` now which implements `Iterator` (should not break any code) 3057* `crate_version!` returns `&'static str` instead of `String` 3058* Using the `clap_app!` macro requires compiling with the `unstable` feature because the syntax could change slightly in the future 3059 3060 3061## v1.5.5 (2016-01-04) 3062 3063 3064#### Bug Fixes 3065 3066* fixes an issue where invalid short args didn't cause an error ([c9bf7e44](https://github.com/clap-rs/clap/commit/c9bf7e4440bd2f9b524ea955311d433c40a7d1e0)) 3067* prints the name in version and help instead of binary name ([8f3817f6](https://github.com/clap-rs/clap/commit/8f3817f665c0cab6726bc16c56a53b6a61e44448), closes [#368](https://github.com/clap-rs/clap/issues/368)) 3068* fixes an intentional panic issue discovered via clippy ([ea83a3d4](https://github.com/clap-rs/clap/commit/ea83a3d421ea8856d4cac763942834d108b71406)) 3069 3070 3071## v1.5.4 (2015-12-18) 3072 3073 3074#### Examples 3075 3076* **17_yaml:** conditinonally compile 17_yaml example ([575de089](https://github.com/clap-rs/clap/commit/575de089a3e240c398cb10e6cf5a5c6b68662c01)) 3077 3078#### Improvements 3079 3080* clippy improvements ([99cdebc2](https://github.com/clap-rs/clap/commit/99cdebc23da3a45a165f14b27bebeb2ed828a2ce)) 3081 3082#### Bug Fixes 3083 3084 3085* **errors:** return correct error type in WrongNumValues error builder ([5ba8ba9d](https://github.com/clap-rs/clap/commit/5ba8ba9dcccdfa74dd1c44260e64b359bbb36be6)) 3086* ArgRequiredElseHelp setting now takes precedence over missing required args ([faad83fb](https://github.com/clap-rs/clap/commit/faad83fbef6752f3093b6e98fca09a9449b830f4), closes [#362](https://github.com/clap-rs/clap/issues/362)) 3087 3088 3089## v1.5.3 (2015-11-20) 3090 3091 3092#### Bug Fixes 3093 3094* **Errors:** fixes some instances when errors are missing a final newline ([c4d2b171](https://github.com/clap-rs/clap/commit/c4d2b1711994479ad64ee52b6b49d2ceccbf2118)) 3095 3096 3097 3098 3099## v1.5.2 (2015-11-14) 3100 3101 3102#### Bug Fixes 3103 3104* **Errors:** fixes a compiling bug when built on Windows or without the color feature ([a35f7634](https://github.com/clap-rs/clap/commit/a35f76346fe6ecc88dda6a1eb13627186e7ce185)) 3105 3106 3107 3108## v1.5.1 (2015-11-13) 3109 3110 3111#### Bug Fixes 3112 3113* **Required Args:** fixes a bug where required args are not correctly accounted for ([f03b88a9](https://github.com/clap-rs/clap/commit/f03b88a9766b331a63879bcd747687f2e5a2661b), closes [#343](https://github.com/clap-rs/clap/issues/343)) 3114 3115 3116 3117## v1.5.0 (2015-11-13) 3118 3119 3120#### Bug Fixes 3121 3122* fixes a bug with required positional args in usage strings ([c6858f78](https://github.com/clap-rs/clap/commit/c6858f78755f8e860204323c828c8355a066dc83)) 3123 3124#### Documentation 3125 3126* **FAQ:** updates readme with slight changes to FAQ ([a4ef0fab](https://github.com/clap-rs/clap/commit/a4ef0fab73c8dc68f1b138965d1340459c113398)) 3127 3128#### Improvements 3129 3130* massive errors overhaul ([cdc29175](https://github.com/clap-rs/clap/commit/cdc29175bc9c53e5b4aec86cbc04c1743154dae6)) 3131* **ArgMatcher:** huge refactor and deduplication of code ([8988853f](https://github.com/clap-rs/clap/commit/8988853fb8825e8f841fde349834cc12cdbad081)) 3132* **Errors:** errors have been vastly improved ([e59bc0c1](https://github.com/clap-rs/clap/commit/e59bc0c16046db156a88ba71a037db05028e995c)) 3133* **Traits:** refactoring some configuration into traits ([5800cdec](https://github.com/clap-rs/clap/commit/5800cdec6dce3def4242b9f7bd136308afb19685)) 3134 3135#### Performance 3136 3137* **App:** 3138 * more BTreeMap->Vec, Opts and SubCmds ([bc4495b3](https://github.com/clap-rs/clap/commit/bc4495b32ec752b6c4b29719e831c043ef2a26ce)) 3139 * changes flags BTreeMap->Vec ([d357640f](https://github.com/clap-rs/clap/commit/d357640fab55e5964fe83efc3c771e53aa3222fd)) 3140 * removed unneeded BTreeMap ([78971fd6](https://github.com/clap-rs/clap/commit/78971fd68d7dc5c8e6811b4520cdc54e4188f733)) 3141 * changes BTreeMap to VecMap in some instances ([64b921d0](https://github.com/clap-rs/clap/commit/64b921d087fdd03775c95ba0bcf65d3f5d36f812)) 3142 * removed excess clones ([ec0089d4](https://github.com/clap-rs/clap/commit/ec0089d42ed715d293fb668d3a90b0db0aa3ec39)) 3143 3144 3145 3146## v1.4.7 (2015-11-03) 3147 3148 3149#### Documentation 3150 3151* Clarify behavior of Arg::multiple with options. ([434f497a](https://github.com/clap-rs/clap/commit/434f497ab6d831f8145cf09278c97ca6ee6c6fe7)) 3152* Fix typos and improve grammar. ([c1f66b5d](https://github.com/clap-rs/clap/commit/c1f66b5de7b5269fbf8760a005ef8c645edd3229)) 3153 3154#### Bug Fixes 3155 3156* **Error Status:** fixes bug where --help and --version return non-zero exit code ([89b51fdf](https://github.com/clap-rs/clap/commit/89b51fdf8b1ab67607567344e2317ff1a757cb12)) 3157 3158 3159 3160## v1.4.6 (2015-10-29) 3161 3162 3163#### Features 3164 3165* allows parsing without a binary name for daemons and interactive CLIs ([aff89d57](https://github.com/clap-rs/clap/commit/aff89d579b5b85c3dc81b64f16d5865299ec39a2), closes [#318](https://github.com/clap-rs/clap/issues/318)) 3166 3167#### Bug Fixes 3168 3169* **Errors:** tones down quoting in some error messages ([34ce59ed](https://github.com/clap-rs/clap/commit/34ce59ede53bfa2eef722c74881cdba7419fd9c7), closes [#309](https://github.com/clap-rs/clap/issues/309)) 3170* **Help and Version:** only builds help and version once ([e3be87cf](https://github.com/clap-rs/clap/commit/e3be87cfc095fc41c9811adcdc6d2b079f237d5e)) 3171* **Option Args:** fixes bug with args and multiple values ([c9a9548a](https://github.com/clap-rs/clap/commit/c9a9548a8f96cef8a3dd9a980948325fbbc1b91b), closes [#323](https://github.com/clap-rs/clap/issues/323)) 3172* **POSIX Overrides:** fixes bug where required args are overridden ([40ed2b50](https://github.com/clap-rs/clap/commit/40ed2b50c3a9fe88bfdbaa43cef9fd6493ecaa8e)) 3173* **Safe Matches:** using 'safe' forms of the get_matches family no longer exit the process ([c47025dc](https://github.com/clap-rs/clap/commit/c47025dca2b3305dea0a0acfdd741b09af0c0d05), closes [#256](https://github.com/clap-rs/clap/issues/256)) 3174* **Versionless SubCommands:** fixes a bug where the -V flag was needlessly built ([27df8b9d](https://github.com/clap-rs/clap/commit/27df8b9d98d13709dad3929a009f40ebff089a1a), closes [#329](https://github.com/clap-rs/clap/issues/329)) 3175 3176#### Documentation 3177 3178* adds comparison in readme ([1a8bf31e](https://github.com/clap-rs/clap/commit/1a8bf31e7a6b87ce48a66af2cde1645b2dd5bc95), closes [#325](https://github.com/clap-rs/clap/issues/325)) 3179 3180 3181 3182## v1.4.5 (2015-10-06) 3183 3184 3185#### Bug Fixes 3186 3187* fixes crash on invalid arg error ([c78ce128](https://github.com/clap-rs/clap/commit/c78ce128ebbe7b8f730815f8176c29d76f4ade8c)) 3188 3189 3190 3191## v1.4.4 (2015-10-06) 3192 3193 3194#### Documentation 3195 3196* clean up some formatting ([b7df92d7](https://github.com/clap-rs/clap/commit/b7df92d7ea25835701dd22ddff984b9749f48a00)) 3197* move the crate-level docs to top of the lib.rs file ([d7233bf1](https://github.com/clap-rs/clap/commit/d7233bf122dbf80ba8fc79e5641be2df8af10e7a)) 3198* changes doc comments to rustdoc comments ([34b601be](https://github.com/clap-rs/clap/commit/34b601be5fdde76c1a0859385b359b96d66b8732)) 3199* fixes panic in 14_groups example ([945b00a0](https://github.com/clap-rs/clap/commit/945b00a0c27714b63bdca48d003fe205fcfdc578), closes [#295](https://github.com/clap-rs/clap/issues/295)) 3200* avoid suggesting star dependencies. ([d33228f4](https://github.com/clap-rs/clap/commit/d33228f40b5fefb84cf3dd51546bfb340dcd9f5a)) 3201* **Rustdoc:** adds portions of the readme to main rustdoc page ([6f9ee181](https://github.com/clap-rs/clap/commit/6f9ee181e69d90bd4206290e59d6f3f1e8f0cbb2), closes [#293](https://github.com/clap-rs/clap/issues/293)) 3202 3203#### Bug Fixes 3204 3205* grammar error in some conflicting option errors ([e73b07e1](https://github.com/clap-rs/clap/commit/e73b07e19474323ad2260da66abbf6a6d4ecbd4f)) 3206* **Unified Help:** sorts both flags and options as a unified category ([2a223dad](https://github.com/clap-rs/clap/commit/2a223dad82901fa2e74baad3bfc4c7b94509300f)) 3207* **Usage:** fixes a bug where required args aren't filtered properly ([72b453dc](https://github.com/clap-rs/clap/commit/72b453dc170af3050bb123d35364f6da77fc06d7), closes [#277](https://github.com/clap-rs/clap/issues/277)) 3208* **Usage Strings:** fixes a bug ordering of elements in usage strings ([aaf0d6fe](https://github.com/clap-rs/clap/commit/aaf0d6fe7aa2403e76096c16204d254a9ee61ee2), closes [#298](https://github.com/clap-rs/clap/issues/298)) 3209 3210#### Features 3211 3212* supports -aValue style options ([0e3733e4](https://github.com/clap-rs/clap/commit/0e3733e4fec2015c2d566a51432dcd92cb69cad3)) 3213* **Trailing VarArg:** adds opt-in setting for final arg being vararg ([27018b18](https://github.com/clap-rs/clap/commit/27018b1821a4bcd5235cfe92abe71b3c99efc24d), closes [#278](https://github.com/clap-rs/clap/issues/278)) 3214 3215 3216 3217## v1.4.3 (2015-09-30) 3218 3219 3220#### Features 3221 3222* allows accessing arg values by group name ([c92a4b9e](https://github.com/clap-rs/clap/commit/c92a4b9eff2d679957f61c0c41ff404b40d38a91)) 3223 3224#### Documentation 3225 3226* use links to examples instead of plain text ([bb4fe237](https://github.com/clap-rs/clap/commit/bb4fe237858535627271465147add537e4556b43)) 3227 3228#### Bug Fixes 3229 3230* **Help Message:** required args no longer double list in usage ([1412e639](https://github.com/clap-rs/clap/commit/1412e639e0a79df84936d1101a837f90077d1c83), closes [#277](https://github.com/clap-rs/clap/issues/277)) 3231* **Possible Values:** possible value validation is restored ([f121ae74](https://github.com/clap-rs/clap/commit/f121ae749f8f4bfe754ef2e8a6dfc286504b5b75), closes [#287](https://github.com/clap-rs/clap/issues/287)) 3232 3233 3234 3235## v1.4.2 (2015-09-23) 3236 3237 3238#### Bug Fixes 3239 3240* **Conflicts:** fixes bug with conflicts not removing required args ([e17fcec5](https://github.com/clap-rs/clap/commit/e17fcec53b3216ad047a13dddc6f740473fad1a1), closes [#271](https://github.com/clap-rs/clap/issues/271)) 3241 3242 3243 3244## v1.4.1 (2015-09-22) 3245 3246 3247#### Examples 3248 3249* add clap_app quick example ([4ba6249c](https://github.com/clap-rs/clap/commit/4ba6249c3cf4d2e083370d1fe4dcc7025282c28a)) 3250 3251#### Features 3252 3253* **Unicode:** allows non-panicking on invalid unicode characters ([c5bf7ddc](https://github.com/clap-rs/clap/commit/c5bf7ddc8cfb876ec928a5aaf5591232bbb32e5d)) 3254 3255#### Documentation 3256 3257* properly names Examples section for rustdoc ([87ba5445](https://github.com/clap-rs/clap/commit/87ba54451d7ec7b1c9b9ef134f90bbe39e6fac69)) 3258* fixes various typos and spelling ([f85640f9](https://github.com/clap-rs/clap/commit/f85640f9f6d8fd3821a40e9b8b7a34fabb789d02)) 3259* **Arg:** unhides fields of the Arg struct ([931aea88](https://github.com/clap-rs/clap/commit/931aea88427edf43a3da90d5a500c1ff2b2c3614)) 3260 3261#### Bug Fixes 3262 3263* flush the buffer in App::print_version() ([cbc42a37](https://github.com/clap-rs/clap/commit/cbc42a37d212d84d22b1777d08e584ff191934e7)) 3264* Macro benchmarks ([13712da1](https://github.com/clap-rs/clap/commit/13712da1d36dc7614eec3a10ad488257ba615751)) 3265 3266 3267 3268## v1.4.0 (2015-09-09) 3269 3270 3271#### Features 3272 3273* allows printing help message by library consumers ([56b95f32](https://github.com/clap-rs/clap/commit/56b95f320875c62dda82cb91b29059671e120ed1)) 3274* allows defining hidden args and subcmds ([2cab4d03](https://github.com/clap-rs/clap/commit/2cab4d0334ea3c2439a1d4bfca5bf9905c7ea9ac), closes [#231](https://github.com/clap-rs/clap/issues/231)) 3275* Builder macro to assist with App/Arg/Group/SubCommand building ([443841b0](https://github.com/clap-rs/clap/commit/443841b012a8d795cd5c2bd69ae6e23ef9b16477)) 3276* **Errors:** allows consumers to write to stderr and exit on error ([1e6403b6](https://github.com/clap-rs/clap/commit/1e6403b6a863574fa3cb6946b1fb58f034e8664c)) 3277 3278 3279 3280## v1.3.2 (2015-09-08) 3281 3282 3283#### Documentation 3284 3285* fixed ErrorKind docs ([dd057843](https://github.com/clap-rs/clap/commit/dd05784327fa070eb6ce5ce89a8507e011d8db94)) 3286* **ErrorKind:** changed examples content ([b9ca2616](https://github.com/clap-rs/clap/commit/b9ca261634b89613bbf3d98fd74d55cefbb31a8c)) 3287 3288#### Bug Fixes 3289 3290* fixes a bug where the help subcommand wasn't overridable ([94003db4](https://github.com/clap-rs/clap/commit/94003db4b5eebe552ca337521c1c001295822745)) 3291 3292#### Features 3293 3294* adds ability not consume self when parsing matches and/or exit on help ([94003db4](https://github.com/clap-rs/clap/commit/94003db4b5eebe552ca337521c1c001295822745)) 3295* **App:** Added ability for users to handle errors themselves ([934e6fbb](https://github.com/clap-rs/clap/commit/934e6fbb643b2385efc23444fe6fce31494dc288)) 3296 3297 3298 3299## v1.3.1 (2015-09-04) 3300 3301 3302#### Examples 3303 3304* **17_yaml:** fixed example ([9b848622](https://github.com/clap-rs/clap/commit/9b848622296c8c5c7b9a39b93ddd41f51df790b5)) 3305 3306#### Performance 3307 3308* changes ArgGroup HashSets to Vec ([3cb4a48e](https://github.com/clap-rs/clap/commit/3cb4a48ebd15c20692f4f3a2a924284dc7fd5e10)) 3309* changes BTreeSet for Vec in some instances ([baab2e3f](https://github.com/clap-rs/clap/commit/baab2e3f4060e811abee14b1654cbcd5cf3b5fea)) 3310 3311 3312 3313## v1.3.0 (2015-09-01) 3314 3315 3316#### Features 3317 3318* **YAML:** allows building a CLI from YAML files ([86cf4c45](https://github.com/clap-rs/clap/commit/86cf4c45626a36b8115446952f9069f73c1debc3)) 3319* **ArgGroups:** adds support for building ArgGroups from yaml ([ecf88665](https://github.com/clap-rs/clap/commit/ecf88665cbff367018b29161a1b75d44a212707d)) 3320* **Subcommands:** adds support for subcommands from yaml ([e415cf78](https://github.com/clap-rs/clap/commit/e415cf78ba916052d118a8648deba2b9c16b1530)) 3321 3322#### Documentation 3323 3324* **YAML:** adds examples for using YAML to build a CLI ([ab41d7f3](https://github.com/clap-rs/clap/commit/ab41d7f38219544750e6e1426076dc498073191b)) 3325* **Args from YAML:** fixes doc examples ([19b348a1](https://github.com/clap-rs/clap/commit/19b348a10050404cd93888dbbbe4f396681b67d0)) 3326* **Examples:** adds better usage examples instead of having unused variables ([8cbacd88](https://github.com/clap-rs/clap/commit/8cbacd8883004fe71a8ea036ec4391c7dd8efe94)) 3327 3328#### Examples 3329 3330* Add AppSettings example ([12705079](https://github.com/clap-rs/clap/commit/12705079ca96a709b4dd94f7ddd20a833b26838c)) 3331 3332#### Bug Fixes 3333 3334* **Unified Help Messages:** fixes a crash from this setting and no opts ([169ffec1](https://github.com/clap-rs/clap/commit/169ffec1003d58d105d7ef2585b3425e57980000), closes [#210](https://github.com/clap-rs/clap/issues/210)) 3335 3336 3337 3338## v1.2.5 (2015-08-27) 3339 3340 3341#### Examples 3342 3343* add custom validator example ([b9997d1f](https://github.com/clap-rs/clap/commit/b9997d1fca74d4d8f93971f2a01bdf9798f913d5)) 3344* fix indentation ([d4f1b740](https://github.com/clap-rs/clap/commit/d4f1b740ede410fd2528b9ecd89592c2fd8b1e20)) 3345 3346#### Features 3347 3348* **Args:** allows opts and args to define a name for help and usage msgs ([ad962ec4](https://github.com/clap-rs/clap/commit/ad962ec478da999c7dba0afdb84c266f4d09b1bd)) 3349 3350 3351 3352## v1.2.4 (2015-08-26) 3353 3354 3355#### Bug Fixes 3356 3357* **Possible Values:** fixes a bug where suggestions aren't made when using --long=value format ([3d5e9a6c](https://github.com/clap-rs/clap/commit/3d5e9a6cedb26668839b481c9978e2fbbab8be6f), closes [#192](https://github.com/clap-rs/clap/issues/192)) 3358 3359 3360 3361## v1.2.3 (2015-08-24) 3362 3363 3364#### Bug Fixes 3365 3366* **App, Args:** fixed subcommand reqs negation ([b41afa8c](https://github.com/clap-rs/clap/commit/b41afa8c3ded3d1be12f7a2f8ea06cc44afc9458), closes [#188](https://github.com/clap-rs/clap/issues/188)) 3367 3368 3369 3370## v1.2.2 (2015-08-23) 3371 3372 3373#### Bug Fixes 3374 3375* fixed confusing error message, also added test for it ([fc7a31a7](https://github.com/clap-rs/clap/commit/fc7a31a745efbf1768ee2c62cd3bb72bfe30c708)) 3376* **App:** fixed requirmets overriding ([9c135eb7](https://github.com/clap-rs/clap/commit/9c135eb790fa16183e5bdb2009ddc3cf9e25f99f)) 3377 3378 3379 3380## v1.2.1 (2015-08-20) 3381 3382 3383#### Documentation 3384 3385* **README.md:** updates for new features ([16cf9245](https://github.com/clap-rs/clap/commit/16cf9245fb5fc4cf6face898e358368bf9961cbb)) 3386 3387#### Features 3388 3389* implements posix compatible conflicts for long args ([8c2d48ac](https://github.com/clap-rs/clap/commit/8c2d48acf5473feebd721a9049a9c9b7051e70f9)) 3390* added overrides to support conflicts in POSIX compatible manner ([0b916a00](https://github.com/clap-rs/clap/commit/0b916a00de26f6941538f6bc5f3365fa302083c1)) 3391* **Args:** allows defining POSIX compatible argument conflicts ([d715646e](https://github.com/clap-rs/clap/commit/d715646e69759ccd95e01f49b04f489827ecf502)) 3392 3393#### Bug Fixes 3394 3395* fixed links in cargo and license buttons ([6d9837ad](https://github.com/clap-rs/clap/commit/6d9837ad9a9e006117cd7372fdc60f9a3889c7e2)) 3396 3397#### Performance 3398 3399* **Args and Apps:** changes HashSet->Vec in some instances for increased performance ([d0c3b379](https://github.com/clap-rs/clap/commit/d0c3b379700757e0a9b0c40af709f8af1f5b4949)) 3400 3401 3402 3403## v1.2.0 (2015-08-15) 3404 3405 3406#### Bug Fixes 3407 3408* fixed misspell and enum name ([7df170d7](https://github.com/clap-rs/clap/commit/7df170d7f4ecff06608317655d1e0c4298f62076)) 3409* fixed use for clap crate ([dc3ada73](https://github.com/clap-rs/clap/commit/dc3ada738667d4b689678f79d14251ee82004ece)) 3410 3411#### Documentation 3412 3413* updates docs for new features ([03496547](https://github.com/clap-rs/clap/commit/034965471782d872ca495045b58d34b31807c5b1)) 3414* fixed docs for previous changes ([ade36778](https://github.com/clap-rs/clap/commit/ade367780c366425de462506d256e0f554ed3b9c)) 3415 3416#### Improvements 3417 3418* **AppSettings:** adds ability to add multiple settings at once ([4a00e251](https://github.com/clap-rs/clap/commit/4a00e2510d0ca8d095d5257d51691ba3b61c1374)) 3419 3420#### Features 3421 3422* Replace application level settings with enum variants ([618dc4e2](https://github.com/clap-rs/clap/commit/618dc4e2c205bf26bc43146164e65eb1f6b920ed)) 3423* **Args:** allows for custom argument value validations to be defined ([84ae2ddb](https://github.com/clap-rs/clap/commit/84ae2ddbceda34b5cbda98a6959edaa52fde2e1a), closes [#170](https://github.com/clap-rs/clap/issues/170)) 3424 3425 3426 3427## v1.1.6 (2015-08-01) 3428 3429 3430#### Bug Fixes 3431 3432* fixes two bugs in App when printing newlines in help and subcommands required error ([d63c0136](https://github.com/clap-rs/clap/commit/d63c0136310db9dd2b1c7b4745938311601d8938)) 3433 3434 3435 3436## v1.1.5 (2015-07-29) 3437 3438#### Performance 3439 3440* removes some unneeded allocations ([93e915df](https://github.com/clap-rs/clap/commit/93e915dfe300f7b7d6209ca93323c6a46f89a8c1)) 3441 3442## v1.1.4 (2015-07-20) 3443 3444 3445#### Improvements 3446 3447* **Usage Strings** displays a [--] when it may be helpful ([86c3be85](https://github.com/clap-rs/clap/commit/86c3be85fb6f77f83b5a6d2df40ae60937486984)) 3448 3449#### Bug Fixes 3450 3451* **Macros** fixes a typo in a macro generated error message ([c9195c5f](https://github.com/clap-rs/clap/commit/c9195c5f92abb8cd6a37b4f4fbb2f1fee2a8e368)) 3452* **Type Errors** fixes formatting of error output when failed type parsing ([fe5d95c6](https://github.com/clap-rs/clap/commit/fe5d95c64f3296e6eddcbec0cb8b86659800145f)) 3453 3454 3455 3456## v1.1.3 (2015-07-18) 3457 3458 3459#### Documentation 3460 3461* updates README.md to include lack of color support on Windows ([52f81e17](https://github.com/clap-rs/clap/commit/52f81e17377b18d2bd0f34693b642b7f358998ee)) 3462 3463#### Bug Fixes 3464 3465* fixes formatting bug which prevented compiling on windows ([9cb5dceb](https://github.com/clap-rs/clap/commit/9cb5dceb3e5fe5e0e7b24619ff77e5040672b723), closes [#163](https://github.com/clap-rs/clap/issues/163)) 3466 3467 3468 3469## v1.1.2 (2015-07-17) 3470 3471 3472#### Bug Fixes 3473 3474* fixes a bug when parsing multiple {n} newlines inside help strings ([6d214b54](https://github.com/clap-rs/clap/commit/6d214b549a9b7e189a94e5fa2b7c92cc333ca637)) 3475 3476 3477 3478## v1.1.1 (2015-07-17) 3479 3480 3481#### Bug Fixes 3482 3483* fixes a logic bug and allows setting Arg::number_of_values() < 2 ([42b6d1fc](https://github.com/clap-rs/clap/commit/42b6d1fc3c519c92dfb3af15276e7d3b635e6cfe), closes [#161](https://github.com/clap-rs/clap/issues/161)) 3484 3485 3486 3487## v1.1.0 (2015-07-16) 3488 3489 3490#### Features 3491 3492* allows creating unified help messages, a la docopt or getopts ([52bcd892](https://github.com/clap-rs/clap/commit/52bcd892ea51564ce463bc5865acd64f8fe91cb1), closes [#158](https://github.com/clap-rs/clap/issues/158)) 3493* allows stating all subcommands should *not* have --version flags ([336c476f](https://github.com/clap-rs/clap/commit/336c476f631d512b54ac56fdca6f29ebdc2c00c5), closes [#156](https://github.com/clap-rs/clap/issues/156)) 3494* allows setting version number to auto-propagate through subcommands ([bc66d3c6](https://github.com/clap-rs/clap/commit/bc66d3c6deedeca62463fff95369ab1cfcdd366b), closes [#157](https://github.com/clap-rs/clap/issues/157)) 3495 3496#### Improvements 3497 3498* **Help Strings** properly aligns and handles newlines in long help strings ([f9800a29](https://github.com/clap-rs/clap/commit/f9800a29696dd2cc0b0284bf693b3011831e556f), closes [#145](https://github.com/clap-rs/clap/issues/145)) 3499 3500 3501#### Performance 3502 3503* **Help Messages** big performance improvements when printing help messages ([52bcd892](https://github.com/clap-rs/clap/commit/52bcd892ea51564ce463bc5865acd64f8fe91cb1)) 3504 3505#### Documentation 3506 3507* updates readme with new features ([8232f7bb](https://github.com/clap-rs/clap/commit/8232f7bb52e88862bc13c3d4f99ee4f56cfe4bc0)) 3508* fix incorrect code example for `App::subcommand_required` ([8889689d](https://github.com/clap-rs/clap/commit/8889689dc6336ccc45b2c9f2cf8e2e483a639e93)) 3509 3510 3511## v1.0.3 (2015-07-11) 3512 3513 3514#### Improvements 3515 3516* **Errors** writes errors to stderr ([cc76ab8c](https://github.com/clap-rs/clap/commit/cc76ab8c2b77c67b42f4717ded530df7806142cf), closes [#154](https://github.com/clap-rs/clap/issues/154)) 3517 3518#### Documentation 3519 3520* **README.md** updates example help message to new format ([0aca29bd](https://github.com/clap-rs/clap/commit/0aca29bd5d6d1a4e9971bdc88d946ffa58606efa)) 3521 3522 3523 3524## v1.0.2 (2015-07-09) 3525 3526 3527#### Improvements 3528 3529* **Usage** re-orders optional arguments and required to natural standard ([dc7e1fce](https://github.com/clap-rs/clap/commit/dc7e1fcea5c85d317018fb201d2a9262249131b4), closes [#147](https://github.com/clap-rs/clap/issues/147)) 3530 3531 3532 3533## v1.0.1 (2015-07-08) 3534 3535 3536#### Bug Fixes 3537 3538* allows empty values when using --long='' syntax ([083f82d3](https://github.com/clap-rs/clap/commit/083f82d333b69720a6ef30074875310921d964d1), closes [#151](https://github.com/clap-rs/clap/issues/151)) 3539 3540 3541 3542## v1.0.0 (2015-07-08) 3543 3544 3545#### Documentation 3546 3547* **README.md** adds new features to what's new list ([938f7f01](https://github.com/clap-rs/clap/commit/938f7f01340f521969376cf4e2e3d9436bca21f7)) 3548* **README.md** use with_name for subcommands ([28b7e316](https://github.com/clap-rs/clap/commit/28b7e3161fb772e5309042648fe8c3a420645bac)) 3549 3550#### Features 3551 3552* args can now be parsed from arbitrary locations, not just std::env::args() ([75312528](https://github.com/clap-rs/clap/commit/753125282b1b9bfff875f1557ce27610edcc59e1)) 3553 3554 3555 3556## v1.0.0-beta (2015-06-30) 3557 3558 3559#### Features 3560 3561* allows waiting for user input on error ([d0da3bdd](https://github.com/clap-rs/clap/commit/d0da3bdd9d1871541907ea9c645322a74d260e07), closes [#140](https://github.com/clap-rs/clap/issues/140)) 3562* **Help** allows one to fully override the auto-generated help message ([26d5ae3e](https://github.com/clap-rs/clap/commit/26d5ae3e330d1e150811d5b60b2b01a8f8df854e), closes [#141](https://github.com/clap-rs/clap/issues/141)) 3563 3564#### Documentation 3565 3566* adds "whats new" section to readme ([ff149a29](https://github.com/clap-rs/clap/commit/ff149a29dd9e179865e6d577cd7dc87c54f8f95c)) 3567 3568#### Improvements 3569 3570* removes deprecated functions in prep for 1.0 ([274484df](https://github.com/clap-rs/clap/commit/274484dfd08fff4859cefd7e9bef3b73d3a9cb5f)) 3571 3572 3573 3574## v0.11.0 (2015-06-17) - BREAKING CHANGE 3575 3576 3577#### Documentation 3578 3579* updates docs to new version flag defaults ([ebf442eb](https://github.com/clap-rs/clap/commit/ebf442ebebbcd2ec6bfe2c06566c9d362bccb112)) 3580 3581#### Features 3582 3583* **Help and Version** default short for version is now `-V` but can be overridden (only breaks manual documentation) (**BREAKING CHANGE** [eb1d9320](https://github.com/clap-rs/clap/commit/eb1d9320c509c1e4e57d7c7959da82bcfe06ada0)) 3584 3585 3586 3587## v0.10.5 (2015-06-06) 3588 3589 3590#### Bug Fixes 3591 3592* **Global Args** global arguments propagate fully now ([1f377960](https://github.com/clap-rs/clap/commit/1f377960a48c82f54ca5f39eb56bcb393140b046), closes [#137](https://github.com/clap-rs/clap/issues/137)) 3593 3594 3595 3596## v0.10.4 (2015-06-06) 3597 3598 3599#### Bug Fixes 3600 3601* **Global Args** global arguments propagate fully now ([8f2c0160](https://github.com/clap-rs/clap/commit/8f2c0160c8d844daef375a33dbaec7d89de00a00), closes [#137](https://github.com/clap-rs/clap/issues/137)) 3602 3603 3604 3605## v0.10.3 (2015-05-31) 3606 3607 3608#### Bug Fixes 3609 3610* **Global Args** fixes a bug where globals only transfer to one subcommand ([a37842ee](https://github.com/clap-rs/clap/commit/a37842eec1ee3162b86fdbda23420b221cdb1e3b), closes [#135](https://github.com/clap-rs/clap/issues/135)) 3611 3612 3613 3614## v0.10.2 (2015-05-30) 3615 3616 3617#### Improvements 3618 3619* **Binary Names** allows users to override the system determined bin name ([2191fe94](https://github.com/clap-rs/clap/commit/2191fe94bda35771383b52872fb7f5421b178be1), closes [#134](https://github.com/clap-rs/clap/issues/134)) 3620 3621#### Documentation 3622 3623* adds contributing guidelines ([6f76bd0a](https://github.com/clap-rs/clap/commit/6f76bd0a07e8b7419b391243ab2d6687cd8a9c5f)) 3624 3625 3626 3627## v0.10.1 (2015-05-26) 3628 3629 3630#### Features 3631 3632* can now specify that an app or subcommand should display help on no args or subcommands ([29ca7b2f](https://github.com/clap-rs/clap/commit/29ca7b2f74376ca0cdb9d8ee3bfa99f7640cc404), closes [#133](https://github.com/clap-rs/clap/issues/133)) 3633 3634 3635 3636## v0.10.0 (2015-05-23) 3637 3638 3639#### Features 3640 3641* **Global Args** allows args that propagate down to child commands ([2bcc6137](https://github.com/clap-rs/clap/commit/2bcc6137a83cb07757771a0afea953e68e692f0b), closes [#131](https://github.com/clap-rs/clap/issues/131)) 3642 3643#### Improvements 3644 3645* **Colors** implements more structured colored output ([d6c3ed54](https://github.com/clap-rs/clap/commit/d6c3ed54d21cf7b40d9f130d4280ff5448522fc5), closes [#129](https://github.com/clap-rs/clap/issues/129)) 3646 3647#### Deprecations 3648 3649* **SubCommand/App** several methods and functions for stable release ([28b73855](https://github.com/clap-rs/clap/commit/28b73855523ad170544afdb20665db98702fbe70)) 3650 3651#### Documentation 3652 3653* updates for deprecations and new features ([743eefe8](https://github.com/clap-rs/clap/commit/743eefe8dd40c1260065ce086d572e9e9358bc4c)) 3654 3655 3656 3657## v0.9.2 (2015-05-20) 3658 3659 3660#### Bug Fixes 3661 3662* **help** allows parent requirements to be ignored with help and version ([52218cc1](https://github.com/clap-rs/clap/commit/52218cc1fdb06a42456c964d98cc2c7ac3432412), closes [#124](https://github.com/clap-rs/clap/issues/124)) 3663 3664 3665 3666## v0.9.1 (2015-05-18) 3667 3668 3669#### Bug Fixes 3670 3671* **help** fixes a bug where requirements are included as program name in help and version ([08ba3f25](https://github.com/clap-rs/clap/commit/08ba3f25cf38b149229ba8b9cb37a5804fe6b789)) 3672 3673 3674 3675## v0.9.0 (2015-05-17) 3676 3677 3678#### Improvements 3679 3680* **usage** usage strings now include parent command requirements ([dd8f21c7](https://github.com/clap-rs/clap/commit/dd8f21c7c15cde348fdcf44fa7c205f0e98d2e4a), closes [#125](https://github.com/clap-rs/clap/issues/125)) 3681* **args** allows consumer of clap to decide if empty values are allowed or not ([ab4ec609](https://github.com/clap-rs/clap/commit/ab4ec609ccf692b9b72cccef5c9f74f5577e360d), closes [#122](https://github.com/clap-rs/clap/issues/122)) 3682 3683#### Features 3684 3685* **subcommands** 3686 * allows optionally specifying that no subcommand is an error ([7554f238](https://github.com/clap-rs/clap/commit/7554f238fd3afdd60b7e4dcf00ff4a9eccf842c1), closes [#126](https://github.com/clap-rs/clap/issues/126)) 3687 * subcommands can optionally negate parent requirements ([4a4229f5](https://github.com/clap-rs/clap/commit/4a4229f500e21c350e1ef78dd09ef27559653288), closes [#123](https://github.com/clap-rs/clap/issues/123)) 3688 3689 3690 3691## v0.8.6 (2015-05-17) 3692 3693 3694#### Bug Fixes 3695 3696* **args** `-` can now be parsed as a value for an argument ([bc12e78e](https://github.com/clap-rs/clap/commit/bc12e78eadd7eaf9d008a8469fdd2dfd7990cb5d), closes [#121](https://github.com/clap-rs/clap/issues/121)) 3697 3698 3699 3700## v0.8.5 (2015-05-15) 3701 3702 3703#### Bug Fixes 3704 3705* **macros** makes macro errors consistent with others ([0c264a8c](https://github.com/clap-rs/clap/commit/0c264a8ca57ec1cfdcb74dae79145d766cdc9b97), closes [#118](https://github.com/clap-rs/clap/issues/118)) 3706 3707#### Features 3708 3709* **macros** 3710 * arg_enum! and simple_enum! provide a Vec<&str> of variant names ([30fa87ba](https://github.com/clap-rs/clap/commit/30fa87ba4e0f3189351d8f4f78b72e616a30d0bd), closes [#119](https://github.com/clap-rs/clap/issues/119)) 3711 * arg_enum! and simple_enum! auto-implement Display ([d1219f0d](https://github.com/clap-rs/clap/commit/d1219f0d1371d872061bd0718057eca4ef47b739), closes [#120](https://github.com/clap-rs/clap/issues/120)) 3712 3713 3714 3715## v0.8.4 (2015-05-12) 3716 3717 3718#### Bug Fixes 3719 3720* **suggestions** --help and --version now get suggestions ([d2b3b1fa](https://github.com/clap-rs/clap/commit/d2b3b1faa0bdc1c5d2350cc4635aba81e02e9d96), closes [#116](https://github.com/clap-rs/clap/issues/116)) 3721 3722 3723 3724## v0.8.3 (2015-05-10) 3725 3726 3727#### Bug Fixes 3728 3729* **usage** groups unfold their members in usage strings ([55d15582](https://github.com/clap-rs/clap/commit/55d155827ea4a6b077a83669701e797ce1ad68f4), closes [#114](https://github.com/clap-rs/clap/issues/114)) 3730 3731#### Performance 3732 3733* **usage** removes unneeded allocations ([fd53cd18](https://github.com/clap-rs/clap/commit/fd53cd188555f5c3dc8bc341c5d7eb04b761a70f)) 3734 3735 3736 3737## v0.8.2 (2015-05-08) 3738 3739 3740#### Bug Fixes 3741 3742* **usage strings** positional arguments are presented in index order ([eb0e374e](https://github.com/clap-rs/clap/commit/eb0e374ecf952f1eefbc73113f21e0705936e40b), closes [#112](https://github.com/clap-rs/clap/issues/112)) 3743 3744 3745 3746## v0.8.1 (2015-05-06) 3747 3748 3749#### Bug Fixes 3750 3751* **subcommands** stops parsing multiple values when subcommands are found ([fc79017e](https://github.com/clap-rs/clap/commit/fc79017eced04fd41cc1801331e5054df41fac17), closes [#109](https://github.com/clap-rs/clap/issues/109)) 3752 3753#### Improvements 3754 3755* **color** reduces color in error messages ([aab44cca](https://github.com/clap-rs/clap/commit/aab44cca6352f47e280c296e50c535f5d752dd46), closes [#110](https://github.com/clap-rs/clap/issues/110)) 3756* **suggestions** adds suggested arguments to usage strings ([99447414](https://github.com/clap-rs/clap/commit/994474146e9fb8b701af773a52da71553d74d4b7)) 3757 3758 3759 3760## v0.8.0 (2015-05-06) 3761 3762 3763#### Bug Fixes 3764 3765* **did-you-mean** for review ([0535cfb0](https://github.com/clap-rs/clap/commit/0535cfb0c711331568b4de8080eeef80bd254b68)) 3766* **Positional** positionals were ignored if they matched a subcmd, even after '--' ([90e7b081](https://github.com/clap-rs/clap/commit/90e7b0818741668b47cbe3becd029bab588e3553)) 3767* **help** fixes bug where space between arg and help is too long ([632fb115](https://github.com/clap-rs/clap/commit/632fb11514c504999ea86bdce47cdd34f8ebf646)) 3768 3769#### Features 3770 3771* **from_usage** adds ability to add value names or num of vals in usage string ([3d581976](https://github.com/clap-rs/clap/commit/3d58197674ed7886ca315efb76e411608a327501), closes [#98](https://github.com/clap-rs/clap/issues/98)) 3772* **did-you-mean** 3773 * gate it behind 'suggestions' ([c0e38351](https://github.com/clap-rs/clap/commit/c0e383515d01bdd5ca459af9c2f7e2cf49e2488b)) 3774 * for possible values ([1cc2deb2](https://github.com/clap-rs/clap/commit/1cc2deb29158e0e4e8b434e4ce26b3d819301a7d)) 3775 * for long flags (i.e. --long) ([52a0b850](https://github.com/clap-rs/clap/commit/52a0b8505c99354bdf5fd1cd256cf41197ac2d81)) 3776 * for subcommands ([06e869b5](https://github.com/clap-rs/clap/commit/06e869b5180258047ed3c60ba099de818dd25fff)) 3777* **Flags** adds suggestions functionality ([8745071c](https://github.com/clap-rs/clap/commit/8745071c3257dd327c497013516f12a823df9530)) 3778* **errors** colorizes output red on error ([f8b26b13](https://github.com/clap-rs/clap/commit/f8b26b13da82ba3ba9a932d3d1ab4ea45d1ab036)) 3779 3780#### Improvements 3781 3782* **arg_enum** allows ascii case insensitivity for enum variants ([b249f965](https://github.com/clap-rs/clap/commit/b249f9657c6921c004764bd80d13ebca81585eec), closes [#104](https://github.com/clap-rs/clap/issues/104)) 3783* **clap-test** simplified `make test` invocation ([d17dcb29](https://github.com/clap-rs/clap/commit/d17dcb2920637a1f58c61c596b7bd362fd53047c)) 3784 3785#### Documentation 3786 3787* **README** adds details about optional and new features ([960389de](https://github.com/clap-rs/clap/commit/960389de02c9872aaee9adabe86987f71f986e39)) 3788* **clap** fix typos caught by codespell ([8891d929](https://github.com/clap-rs/clap/commit/8891d92917aa1a069cca67272be41b99e548356e)) 3789* **from_usage** explains new usage strings with multiple values ([05476fc6](https://github.com/clap-rs/clap/commit/05476fc61cd1e5f4a4e750d258c878732a3a9c64)) 3790 3791 3792 3793## v0.7.6 (2015-05-05) 3794 3795 3796#### Improvements 3797 3798* **Options** adds number of values to options in help/usage ([c1c993c4](https://github.com/clap-rs/clap/commit/c1c993c419d18e35c443785053d8de9a2ef88073)) 3799 3800#### Features 3801 3802* **from_usage** adds ability to add value names or num of vals in usage string ([ad55748c](https://github.com/clap-rs/clap/commit/ad55748c265cf27935c7b210307d2040b6a09125), closes [#98](https://github.com/clap-rs/clap/issues/98)) 3803 3804#### Bug Fixes 3805 3806* **MultipleValues** properly distinguishes between multiple values and multiple occurrences ([dd2a7564](https://github.com/clap-rs/clap/commit/dd2a75640ca68a91b973faad15f04df891356cef), closes [#99](https://github.com/clap-rs/clap/issues/99)) 3807* **help** fixes tab alignment with multiple values ([847001ff](https://github.com/clap-rs/clap/commit/847001ff6d8f4d9518e810fefb8edf746dd0f31e)) 3808 3809#### Documentation 3810 3811* **from_usage** explains new usage strings with multiple values ([5a3a42df](https://github.com/clap-rs/clap/commit/5a3a42dfa3a783537f88dedc0fd5f0edcb8ea372)) 3812 3813 3814 3815## v0.7.5 (2015-05-04) 3816 3817 3818#### Bug Fixes 3819 3820* **Options** fixes bug where options with no value don't error out ([a1fb94be](https://github.com/clap-rs/clap/commit/a1fb94be53141572ffd97aad037295d4ffec82d0)) 3821 3822 3823 3824## v0.7.4 (2015-05-03) 3825 3826 3827#### Bug Fixes 3828 3829* **Options** fixes a bug where option arguments in succession get their values skipped ([f66334d0](https://github.com/clap-rs/clap/commit/f66334d0ce984e2b56e5c19abb1dd536fae9342a)) 3830 3831 3832 3833## v0.7.3 (2015-05-03) 3834 3835 3836#### Bug Fixes 3837 3838* **RequiredValues** fixes a bug where missing values are parsed as missing arguments ([93c4a723](https://github.com/clap-rs/clap/commit/93c4a7231ba1a08152648598f7aa4503ea82e4de)) 3839 3840#### Improvements 3841 3842* **ErrorMessages** improves error messages and corrections ([a29c3983](https://github.com/clap-rs/clap/commit/a29c3983c4229906655a29146ec15a0e46dd942d)) 3843* **ArgGroups** improves requirement and confliction support for groups ([c236dc5f](https://github.com/clap-rs/clap/commit/c236dc5ff475110d2a1b80e62903f80296163ad3)) 3844 3845 3846 3847## v0.7.2 (2015-05-03) 3848 3849 3850#### Bug Fixes 3851 3852* **RequiredArgs** fixes bug where required-by-default arguments are not listed in usage ([12aea961](https://github.com/clap-rs/clap/commit/12aea9612d290845ba86515c240aeeb0a21198db), closes [#96](https://github.com/clap-rs/clap/issues/96)) 3853 3854 3855 3856## v0.7.1 (2015-05-01) 3857 3858 3859#### Bug Fixes 3860 3861* **MultipleValues** stops evaluating values if the max or exact number of values was reached ([86d92c9f](https://github.com/clap-rs/clap/commit/86d92c9fdbf9f422442e9562977bbaf268dbbae1)) 3862 3863 3864 3865## v0.7.0 (2015-04-30) - BREAKING CHANGE 3866 3867 3868#### Bug Fixes 3869 3870* **from_usage** removes bug where usage strings have no help text ([ad4e5451](https://github.com/clap-rs/clap/commit/ad4e54510739aeabf75f0da3278fb0952db531b3), closes [#83](https://github.com/clap-rs/clap/issues/83)) 3871 3872#### Features 3873 3874* **MultipleValues** 3875 * add support for minimum and maximum number of values ([53f6b8c9](https://github.com/clap-rs/clap/commit/53f6b8c9d8dc408b4fa9f833fc3a63683873c42f)) 3876 * adds support limited number and named values ([ae09f05e](https://github.com/clap-rs/clap/commit/ae09f05e92251c1b39a83d372736fcc7b504e432)) 3877 * implement shorthand for options with multiple values ([6669f0a9](https://github.com/clap-rs/clap/commit/6669f0a9687d4f668523145d7bd5c007d1eb59a8)) 3878* **arg** allow other types besides Vec for multiple value settings (**BREAKING CHANGE** [0cc2f698](https://github.com/clap-rs/clap/commit/0cc2f69839b9b1db5d06330771b494783049a88e), closes [#87](https://github.com/clap-rs/clap/issues/87)) 3879* **usage** implement smart usage strings on errors ([d77048ef](https://github.com/clap-rs/clap/commit/d77048efb1e595ffe831f1a2bea2f2700db53b9f), closes [#88](https://github.com/clap-rs/clap/issues/88)) 3880 3881 3882 3883## v0.6.9 (2015-04-29) 3884 3885 3886#### Bug Fixes 3887 3888* **from_usage** removes bug where usage strings have no help text ([ad4e5451](https://github.com/clap-rs/clap/commit/ad4e54510739aeabf75f0da3278fb0952db531b3), closes [#83](https://github.com/clap-rs/clap/issues/83)) 3889 3890 3891 3892## 0.6.8 (2015-04-27) 3893 3894 3895#### Bug Fixes 3896 3897* **help** change long help --long=long -> --long <long> ([1e25abfc](https://github.com/clap-rs/clap/commit/1e25abfc36679ab89eae71bf98ced4de81992d00)) 3898* **RequiredArgs** required by default args should no longer be required when their exclusions are present ([4bb4c3cc](https://github.com/clap-rs/clap/commit/4bb4c3cc076b49e86720e882bf8c489877199f2d)) 3899 3900#### Features 3901 3902* **ArgGroups** add ability to create arg groups ([09eb4d98](https://github.com/clap-rs/clap/commit/09eb4d9893af40c347e50e2b717e1adef552357d)) 3903 3904 3905 3906## v0.6.7 (2015-04-22) 3907 3908 3909#### Bug Fixes 3910 3911* **from_usage** fix bug causing args to not be required ([b76129e9](https://github.com/clap-rs/clap/commit/b76129e9b71a63365d5c77a7f57b58dbd1e94d49)) 3912 3913#### Features 3914 3915* **apps** add ability to display additional help info after auto-gen'ed help msg ([65cc259e](https://github.com/clap-rs/clap/commit/65cc259e4559cbe3653c865ec0c4b1e42a389b07)) 3916 3917 3918 3919## v0.6.6 (2015-04-19) 3920 3921 3922#### Bug Fixes 3923 3924* **from_usage** tabs and spaces should be treated equally ([4fd44181](https://github.com/clap-rs/clap/commit/4fd44181d55d8eb88caab1e625231cfa3129e347)) 3925 3926#### Features 3927 3928* **macros.rs** add macro to get version from Cargo.toml ([c630969a](https://github.com/clap-rs/clap/commit/c630969aa3bbd386379219cae27ba1305b117f3e)) 3929 3930 3931 3932## v0.6.5 (2015-04-19) 3933 3934 3935#### Bug Fixes 3936 3937* **macros.rs** fix use statements for trait impls ([86e4075e](https://github.com/clap-rs/clap/commit/86e4075eb111937c8a7bdb344e866e350429f042)) 3938 3939 3940 3941## v0.6.4 (2015-04-17) 3942 3943 3944#### Features 3945 3946* **macros** add ability to create enums pub or priv with derives ([2c499f80](https://github.com/clap-rs/clap/commit/2c499f8015a199827cdf1fa3ec4f6f171722f8c7)) 3947 3948 3949 3950## v0.6.3 (2015-04-16) 3951 3952 3953#### Features 3954 3955* **macros** add macro to create custom enums to use as types ([fb672aff](https://github.com/clap-rs/clap/commit/fb672aff561c29db2e343d6c607138f141aca8b6)) 3956 3957 3958 3959## v0.6.2 (2015-04-14) 3960 3961 3962#### Features 3963 3964* **macros** 3965 * add ability to get multiple typed values or exit ([0b87251f](https://github.com/clap-rs/clap/commit/0b87251fc088234bee51c323c2b652d7254f7a59)) 3966 * add ability to get a typed multiple values ([e243fe38](https://github.com/clap-rs/clap/commit/e243fe38ddbbf845a46c0b9baebaac3778c80927)) 3967 * add convenience macro to get a typed value or exit ([4b7cd3ea](https://github.com/clap-rs/clap/commit/4b7cd3ea4947780d9daa39f3e1ddab53ad4c7fef)) 3968 * add convenience macro to get a typed value ([8752700f](https://github.com/clap-rs/clap/commit/8752700fbb30e89ee68adbce24489ae9a24d33a9)) 3969 3970 3971 3972## v0.6.1 (2015-04-13) 3973 3974 3975#### Bug Fixes 3976 3977* **from_usage** trim all whitespace before parsing ([91d29045](https://github.com/clap-rs/clap/commit/91d2904599bd602deef2e515dfc65dc2863bdea0)) 3978 3979 3980 3981## v0.6.0 (2015-04-13) 3982 3983 3984#### Bug Fixes 3985 3986* **tests** fix failing doc tests ([3710cd69](https://github.com/clap-rs/clap/commit/3710cd69162f87221a62464f63437c1ce843ad3c)) 3987 3988#### Features 3989 3990* **app** add support for building args from usage strings ([d5d48bcf](https://github.com/clap-rs/clap/commit/d5d48bcf463a4e494ef758836bd69a4c220bbbb5)) 3991* **args** add ability to create basic arguments from a usage string ([ab409a8f](https://github.com/clap-rs/clap/commit/ab409a8f1db9e37cc70200f6f4a84a162692e618)) 3992 3993 3994 3995## v0.5.14 (2015-04-10) 3996 3997 3998#### Bug Fixes 3999 4000* **usage** 4001 * remove unneeded space ([51372789](https://github.com/clap-rs/clap/commit/5137278942121bc2593ce6e5dc224ec2682549e6)) 4002 * remove warning about unused variables ([ba817b9d](https://github.com/clap-rs/clap/commit/ba817b9d815e37320650973f1bea0e7af3030fd7)) 4003 4004#### Features 4005 4006* **usage** add ability to get usage string for subcommands too ([3636afc4](https://github.com/clap-rs/clap/commit/3636afc401c2caa966efb5b1869ef4f1ed3384aa)) 4007 4008 4009 4010## v0.5.13 (2015-04-09) 4011 4012 4013#### Features 4014 4015* **SubCommands** add method to get name and subcommand matches together ([64e53928](https://github.com/clap-rs/clap/commit/64e539280e23e567cf5de393b346eb0ca20e7eb5)) 4016* **ArgMatches** add method to get default usage string ([02462150](https://github.com/clap-rs/clap/commit/02462150ca750bdc7012627d7e8d96379d494d7f)) 4017 4018 4019 4020## v0.5.12 (2015-04-08) 4021 4022 4023#### Features 4024 4025* **help** sort arguments by name so as to not display a random order ([f4b2bf57](https://github.com/clap-rs/clap/commit/f4b2bf5767386013069fb74862e6e938dacf44d2)) 4026 4027 4028 4029## v0.5.11 (2015-04-08) 4030 4031 4032#### Bug Fixes 4033 4034* **flags** fix bug not allowing users to specify -v or -h ([90e72cff](https://github.com/clap-rs/clap/commit/90e72cffdee321b79eea7a2207119533540062b4)) 4035 4036 4037 4038## v0.5.10 (2015-04-08) 4039 4040 4041#### Bug Fixes 4042 4043* **help** fix spacing when option argument has not long version ([ca17fa49](https://github.com/clap-rs/clap/commit/ca17fa494b68e92da83ee364bf64b0687006824b)) 4044 4045 4046 4047## v0.5.9 (2015-04-08) 4048 4049 4050#### Bug Fixes 4051 4052* **positional args** all previous positional args become required when a latter one is required ([c14c3f31](https://github.com/clap-rs/clap/commit/c14c3f31fd557c165570b60911d8ee483d89d6eb), closes [#50](https://github.com/clap-rs/clap/issues/50)) 4053* **clap** remove unstable features for Rust 1.0 ([9abdb438](https://github.com/clap-rs/clap/commit/9abdb438e36e364d41550e7f5d44ebcaa8ee6b10)) 4054* **args** improve error messages for arguments with mutual exclusions ([18dbcf37](https://github.com/clap-rs/clap/commit/18dbcf37024daf2b76ca099a6f118b53827aa339), closes [#51](https://github.com/clap-rs/clap/issues/51)) 4055 4056 4057 4058## v0.5.8 (2015-04-08) 4059 4060 4061#### Bug Fixes 4062 4063* **option args** fix bug in getting the wrong number of occurrences for options ([82ad6ad7](https://github.com/clap-rs/clap/commit/82ad6ad77539cf9f9a03b78db466f575ebd972cc)) 4064* **help** fix formatting for option arguments with no long ([e8691004](https://github.com/clap-rs/clap/commit/e869100423d93fa3acff03c4620cbcc0d0e790a1)) 4065* **flags** add assertion to catch flags with specific value sets ([a0a2a40f](https://github.com/clap-rs/clap/commit/a0a2a40fed57f7c5ad9d68970d090e9856306c7d), closes [#52](https://github.com/clap-rs/clap/issues/52)) 4066* **args** improve error messages for arguments with mutual exclusions ([bff945fc](https://github.com/clap-rs/clap/commit/bff945fc5d03bba4266533340adcffb002508d1b), closes [#51](https://github.com/clap-rs/clap/issues/51)) 4067* **tests** add missing .takes_value(true) to option2 ([bdb0e88f](https://github.com/clap-rs/clap/commit/bdb0e88f696c8595c3def3bfb0e52d538c7be085)) 4068* **positional args** all previous positional args become required when a latter one is required ([343d47dc](https://github.com/clap-rs/clap/commit/343d47dcbf83786a45c0d0f01b27fd9dd76725de), closes [#50](https://github.com/clap-rs/clap/issues/50)) 4069 4070 4071 4072## v0.5.7 (2015-04-08) 4073 4074 4075#### Bug Fixes 4076 4077* **args** fix bug in arguments who are required and mutually exclusive ([6ceb88a5](https://github.com/clap-rs/clap/commit/6ceb88a594caae825605abc1cdad95204996bf29)) 4078 4079 4080 4081## v0.5.6 (2015-04-08) 4082 4083 4084#### Bug Fixes 4085 4086* **help** fix formatting of help and usage ([28691b52](https://github.com/clap-rs/clap/commit/28691b52f67e65c599e10e4ea2a0f6f9765a06b8)) 4087 4088 4089 4090## v0.5.5 (2015-04-08) 4091 4092 4093#### Bug Fixes 4094 4095* **help** fix formatting of help for flags and options ([6ec10115](https://github.com/clap-rs/clap/commit/6ec1011563a746f0578a93b76d45e63878e0f9a8)) 4096 4097 4098 4099## v0.5.4 (2015-04-08) 4100 4101 4102#### Features 4103 4104* **help** add '...' to indicate multiple values supported ([297ddba7](https://github.com/clap-rs/clap/commit/297ddba77000e2228762ab0eca50b480f7467386)) 4105 4106 4107 4108## v0.5.3 (2015-04-08) 4109 4110 4111#### Features 4112 4113* **positionals** 4114 * add assertions for positional args with multiple vals ([b7fa72d4](https://github.com/clap-rs/clap/commit/b7fa72d40f18806ec2042dd67a518401c2cf5681)) 4115 * add support for multiple values ([80784009](https://github.com/clap-rs/clap/commit/807840094109fbf90b348039ae22669ef27889ba)) 4116 4117 4118 4119## v0.5.2 (2015-04-08) 4120 4121 4122#### Bug Fixes 4123 4124* **apps** allow use of hyphens in application and subcommand names ([da549dcb](https://github.com/clap-rs/clap/commit/da549dcb6c7e0d773044ab17829744483a8b0f7f)) 4125 4126 4127 4128## v0.5.1 (2015-04-08) 4129 4130 4131#### Bug Fixes 4132 4133* **args** determine if the only arguments allowed are also required ([0a09eb36](https://github.com/clap-rs/clap/commit/0a09eb365ced9a03faf8ed24f083ef730acc90e8)) 4134 4135 4136 4137## v0.5.0 (2015-04-08) 4138 4139 4140#### Features 4141 4142* **args** add support for a specific set of allowed values on options or positional arguments ([270eb889](https://github.com/clap-rs/clap/commit/270eb88925b6dc2881bff1f31ee344f085d31809)) 4143 4144 4145 4146## v0.4.18 (2015-04-08) 4147 4148 4149#### Bug Fixes 4150 4151* **usage** display required args in usage, even if only required by others ([1b7316d4](https://github.com/clap-rs/clap/commit/1b7316d4a8df70b0aa584ccbfd33f68966ad2a54)) 4152 4153#### Features 4154 4155* **subcommands** properly list subcommands in help and usage ([4ee02344](https://github.com/clap-rs/clap/commit/4ee023442abc3dba54b68138006a52b714adf331)) 4156 4157 4158 4159## v0.4.17 (2015-04-08) 4160 4161 4162#### Bug Fixes 4163 4164* **tests** remove cargo test from claptests makefile ([1cf73817](https://github.com/clap-rs/clap/commit/1cf73817d6fb1dccb5b6a23b46c2efa8b567ad62)) 4165 4166 4167 4168## v0.4.16 (2015-04-08) 4169 4170 4171#### Bug Fixes 4172 4173* **option** fix bug with option occurrence values ([9af52e93](https://github.com/clap-rs/clap/commit/9af52e93cef9e17ac9974963f132013d0b97b946)) 4174* **tests** fix testing script bug and formatting ([d8f03a55](https://github.com/clap-rs/clap/commit/d8f03a55c4f74d126710ee06aad5a667246a8001)) 4175 4176#### Features 4177 4178* **arg** allow lifetimes other than 'static in arguments ([9e8c1fb9](https://github.com/clap-rs/clap/commit/9e8c1fb9406f8448873ca58bab07fe905f1551e5)) 4179 4180<!-- next-url --> 4181[Unreleased]: https://github.com/clap-rs/clap/compare/v4.1.13...HEAD 4182[4.1.13]: https://github.com/clap-rs/clap/compare/v4.1.12...v4.1.13 4183[4.1.12]: https://github.com/clap-rs/clap/compare/v4.1.11...v4.1.12 4184[4.1.11]: https://github.com/clap-rs/clap/compare/v4.1.10...v4.1.11 4185[4.1.10]: https://github.com/clap-rs/clap/compare/v4.1.9...v4.1.10 4186[4.1.9]: https://github.com/clap-rs/clap/compare/v4.1.8...v4.1.9 4187[4.1.8]: https://github.com/clap-rs/clap/compare/v4.1.7...v4.1.8 4188[4.1.7]: https://github.com/clap-rs/clap/compare/v4.1.6...v4.1.7 4189[4.1.6]: https://github.com/clap-rs/clap/compare/v4.1.5...v4.1.6 4190[4.1.5]: https://github.com/clap-rs/clap/compare/v4.1.4...v4.1.5 4191[4.1.4]: https://github.com/clap-rs/clap/compare/v4.1.3...v4.1.4 4192[4.1.3]: https://github.com/clap-rs/clap/compare/v4.1.2...v4.1.3 4193[4.1.2]: https://github.com/clap-rs/clap/compare/v4.1.1...v4.1.2 4194[4.1.1]: https://github.com/clap-rs/clap/compare/v4.1.0...v4.1.1 4195[4.1.0]: https://github.com/clap-rs/clap/compare/v4.0.32...v4.1.0 4196[4.0.32]: https://github.com/clap-rs/clap/compare/v4.0.31...v4.0.32 4197[4.0.31]: https://github.com/clap-rs/clap/compare/v4.0.30...v4.0.31 4198[4.0.30]: https://github.com/clap-rs/clap/compare/v4.0.29...v4.0.30 4199[4.0.29]: https://github.com/clap-rs/clap/compare/v4.0.28...v4.0.29 4200[4.0.28]: https://github.com/clap-rs/clap/compare/v4.0.27...v4.0.28 4201[4.0.27]: https://github.com/clap-rs/clap/compare/v4.0.26...v4.0.27 4202[4.0.26]: https://github.com/clap-rs/clap/compare/v4.0.25...v4.0.26 4203[4.0.25]: https://github.com/clap-rs/clap/compare/v4.0.24...v4.0.25 4204[4.0.24]: https://github.com/clap-rs/clap/compare/v4.0.23...v4.0.24 4205[4.0.23]: https://github.com/clap-rs/clap/compare/v4.0.22...v4.0.23 4206[4.0.22]: https://github.com/clap-rs/clap/compare/v4.0.21...v4.0.22 4207[4.0.21]: https://github.com/clap-rs/clap/compare/v4.0.20...v4.0.21 4208[4.0.20]: https://github.com/clap-rs/clap/compare/v4.0.19...v4.0.20 4209[4.0.19]: https://github.com/clap-rs/clap/compare/v4.0.18...v4.0.19 4210[4.0.18]: https://github.com/clap-rs/clap/compare/v4.0.17...v4.0.18 4211[4.0.17]: https://github.com/clap-rs/clap/compare/v4.0.16...v4.0.17 4212[4.0.16]: https://github.com/clap-rs/clap/compare/v4.0.15...v4.0.16 4213[4.0.15]: https://github.com/clap-rs/clap/compare/v4.0.14...v4.0.15 4214[4.0.14]: https://github.com/clap-rs/clap/compare/v4.0.13...v4.0.14 4215[4.0.13]: https://github.com/clap-rs/clap/compare/v4.0.12...v4.0.13 4216[4.0.12]: https://github.com/clap-rs/clap/compare/v4.0.11...v4.0.12 4217[4.0.11]: https://github.com/clap-rs/clap/compare/v4.0.10...v4.0.11 4218[4.0.10]: https://github.com/clap-rs/clap/compare/v4.0.9...v4.0.10 4219[4.0.9]: https://github.com/clap-rs/clap/compare/v4.0.8...v4.0.9 4220[4.0.8]: https://github.com/clap-rs/clap/compare/v4.0.7...v4.0.8 4221[4.0.7]: https://github.com/clap-rs/clap/compare/v4.0.6...v4.0.7 4222[4.0.6]: https://github.com/clap-rs/clap/compare/v4.0.5...v4.0.6 4223[4.0.5]: https://github.com/clap-rs/clap/compare/v4.0.4...v4.0.5 4224[4.0.4]: https://github.com/clap-rs/clap/compare/v4.0.3...v4.0.4 4225[4.0.3]: https://github.com/clap-rs/clap/compare/v4.0.2...v4.0.3 4226[4.0.2]: https://github.com/clap-rs/clap/compare/v4.0.1...v4.0.2 4227[4.0.1]: https://github.com/clap-rs/clap/compare/v4.0.0...v4.0.1 4228[4.0.0]: https://github.com/clap-rs/clap/compare/v3.2.18...v4.0.0 4229[3.2.18]: https://github.com/clap-rs/clap/compare/v3.2.17...v3.2.18 4230[3.2.17]: https://github.com/clap-rs/clap/compare/v3.2.16...v3.2.17 4231[3.2.16]: https://github.com/clap-rs/clap/compare/v3.2.15...v3.2.16 4232[3.2.15]: https://github.com/clap-rs/clap/compare/v3.2.14...v3.2.15 4233[3.2.14]: https://github.com/clap-rs/clap/compare/v3.2.13...v3.2.14 4234[3.2.13]: https://github.com/clap-rs/clap/compare/v3.2.12...v3.2.13 4235[3.2.12]: https://github.com/clap-rs/clap/compare/v3.2.11...v3.2.12 4236[3.2.11]: https://github.com/clap-rs/clap/compare/v3.2.10...v3.2.11 4237[3.2.10]: https://github.com/clap-rs/clap/compare/v3.2.8...v3.2.10 4238[3.2.8]: https://github.com/clap-rs/clap/compare/v3.2.7...v3.2.8 4239[3.2.7]: https://github.com/clap-rs/clap/compare/v3.2.6...v3.2.7 4240[3.2.6]: https://github.com/clap-rs/clap/compare/v3.2.5...v3.2.6 4241[3.2.5]: https://github.com/clap-rs/clap/compare/v3.2.4...v3.2.5 4242[3.2.4]: https://github.com/clap-rs/clap/compare/v3.2.3...v3.2.4 4243[3.2.3]: https://github.com/clap-rs/clap/compare/v3.2.2...v3.2.3 4244[3.2.2]: https://github.com/clap-rs/clap/compare/v3.2.1...v3.2.2 4245[3.2.1]: https://github.com/clap-rs/clap/compare/v3.2.0...v3.2.1 4246[3.2.0]: https://github.com/clap-rs/clap/compare/v3.1.18...v3.2.0 4247[3.1.18]: https://github.com/clap-rs/clap/compare/v3.1.17...v3.1.18 4248[3.1.17]: https://github.com/clap-rs/clap/compare/v3.1.16...v3.1.17 4249[3.1.16]: https://github.com/clap-rs/clap/compare/v3.1.15...v3.1.16 4250[3.1.15]: https://github.com/clap-rs/clap/compare/v3.1.14...v3.1.15 4251[3.1.14]: https://github.com/clap-rs/clap/compare/v3.1.13...v3.1.14 4252[3.1.13]: https://github.com/clap-rs/clap/compare/v3.1.12...v3.1.13 4253[3.1.12]: https://github.com/clap-rs/clap/compare/v3.1.11...v3.1.12 4254[3.1.11]: https://github.com/clap-rs/clap/compare/v3.1.10...v3.1.11 4255[3.1.10]: https://github.com/clap-rs/clap/compare/v3.1.9...v3.1.10 4256[3.1.9]: https://github.com/clap-rs/clap/compare/v3.1.8...v3.1.9 4257[3.1.8]: https://github.com/clap-rs/clap/compare/v3.1.7...v3.1.8 4258[3.1.7]: https://github.com/clap-rs/clap/compare/v3.1.6...v3.1.7 4259[3.1.6]: https://github.com/clap-rs/clap/compare/v3.1.5...v3.1.6 4260[3.1.5]: https://github.com/clap-rs/clap/compare/v3.1.4...v3.1.5 4261[3.1.4]: https://github.com/clap-rs/clap/compare/v3.1.3...v3.1.4 4262[3.1.3]: https://github.com/clap-rs/clap/compare/v3.1.2...v3.1.3 4263[3.1.2]: https://github.com/clap-rs/clap/compare/v3.1.1...v3.1.2 4264[3.1.1]: https://github.com/clap-rs/clap/compare/v3.1.0...v3.1.1 4265[3.1.0]: https://github.com/clap-rs/clap/compare/v3.0.14...v3.1.0 4266[3.0.14]: https://github.com/clap-rs/clap/compare/v3.0.13...v3.0.14 4267[3.0.13]: https://github.com/clap-rs/clap/compare/v3.0.12...v3.0.13 4268[3.0.12]: https://github.com/clap-rs/clap/compare/v3.0.11...v3.0.12 4269[3.0.11]: https://github.com/clap-rs/clap/compare/v3.0.10...v3.0.11 4270[3.0.10]: https://github.com/clap-rs/clap/compare/v3.0.9...v3.0.10 4271[3.0.9]: https://github.com/clap-rs/clap/compare/v3.0.8...v3.0.9 4272[3.0.8]: https://github.com/clap-rs/clap/compare/v3.0.7...v3.0.8 4273[3.0.7]: https://github.com/clap-rs/clap/compare/v3.0.6...v3.0.7 4274[3.0.6]: https://github.com/clap-rs/clap/compare/v3.0.5...v3.0.6 4275[3.0.5]: https://github.com/clap-rs/clap/compare/v3.0.4...v3.0.5 4276[3.0.4]: https://github.com/clap-rs/clap/compare/v3.0.3...v3.0.4 4277[3.0.3]: https://github.com/clap-rs/clap/compare/v3.0.2...v3.0.3 4278[3.0.2]: https://github.com/clap-rs/clap/compare/v3.0.1...v3.0.2 4279[3.0.1]: https://github.com/clap-rs/clap/compare/v3.0.0...v3.0.1 4280[3.0.0]: https://github.com/clap-rs/clap/compare/v2.34.0...v3.0.0 4281[2.34.0]: https://github.com/clap-rs/clap/compare/v2.33.4...v2.34.0 4282[2.33.4]: https://github.com/clap-rs/clap/compare/v2.33.3...v2.33.4 4283[2.33.3]: https://github.com/clap-rs/clap/compare/v2.33.2...v2.33.3 4284[2.33.2]: https://github.com/clap-rs/clap/compare/v2.33.1...v2.33.2 4285[2.33.1]: https://github.com/clap-rs/clap/compare/v2.33.0...v2.33.1 4286[2.33.0]: https://github.com/clap-rs/clap/compare/v2.32.0...v2.33.0 4287