TODO: Structopt and traits
TODO: YamlLoader
- Renamed Features
unicode_help
tounicode
to encompass more functionality
- Gated behind features
App::replace
is now gated behindunstable-replace
- Removed
derive
requirementclap::ArgEnum
clap::Args
clap::FromArgMatches
clap::IntoApp
clap::Subcommand
- Renamed Traits
clap::Clap
=>clap::Parser
- Renamed Methods
App::generate_usage
=>App::render_usage
- Removed Settings
AppSettings::DisableVersionForSubcommands
is now default behaviourAppSettings::ColoredHelp
: we are now relying solely on thecolor
feature flag andApp::color
methodAppSettings::StrictUtf8
is now default behaviourAppSettings::AllowInvalidUtf8
in favor ofArgSettings::AllowInvalidUtf8
AppSettings::UnifiedHelpMessage
is now default behaviourAppSettings::ColorAlways
in favor ofApp::color
AppSettings::ColorNever
in favor ofApp::color
AppSettings::ColorAuto
in favor ofApp::color
- Removed methods
- App
App::get_flags
App::get_positionals_with_no_heading
App::get_flags_with_no_heading
App::get_opts_with_no_heading
App::stop_custom_headings
in favor ofApp:help_heading(None)
- Error
Error::with_description
in favor ofApp::error
- ArgEnum
ArgEnum::as_arg
in favor ofArgEnum::to_arg_value
- clap_generate::Generator
Generator::all_subcommands
Generator::find_subcommand_with_path
Generator::subcommands
Generator::shorts_and_visible_aliases
Generator::longs_and_visible_aliases
Generator::flags
- App
- Removed
ArgEnum::VARIANTS
in favor ofArgEnum::value_variants
- Deprecated
clap::clap_app!
in favor of other builders
- Changed
App::get_possible_values
returnsOption<&[ArgValue]>
nowRegexRef
is now an enum also allowingRegexSet
to be usedclap_generate::Generator::file_name
andclap_generate::Generator::generate
now take&self
clap_generate::generate
andclap_generate::generate_to
now takesGenerator
as first argument
- Added
clap::ArgValue
to denote information about possible values for argsclap::ColorChoice
to specify color setting for the app
- Added Settings
AppSettings::AllowInvalidUtf8ForExternalSubcommands
AppSettings::Multicall
behindunstable-multicall
featureArgSettings::AllowInvalidUtf8
- Added Methods
- ArgEnum
ArgEnum::value_variants
ArgEnum::to_arg_value
- App
App::color
App::error
App::get_long_about
App::get_help_heading
- Arg
Arg::is_positional
- ArgEnum
- Allow positionals to occur multiple times
- As of this release,
clap
requiresrustc 1.54.0
or greater.
Added unicode_help
, env
features.
- Gated behind
env
:- Arg
Arg::env
Arg::env_os
Arg::hide_env_values
- ArgSettings
ArgSettings::HideEnvValues
- Arg
- Removed Methods
- Arg
Arg::settings
in favor ofArg::setting(Setting1 | Setting2)
Arg::multiple
in favour ofArg::multiple_values
andArg::multiple_occurrences
- Arg
- Renamed Settings
AppSettings::DisableHelpFlags
=>AppSettings::DisableHelpFlag
AppSettings::DisableVersion
=>AppSettings::DisableVersionFlag
AppSettings::VersionlessSubcommands
=>AppSettings::DisableVersionForSubcommands
(changed again 3.0.0-beta.5)
- Renamed Variants
- ErrorKind
ErrorKind::MissingArgumentOrSubcommand
=>ErrorKind::DisplayHelpOnMissingArgumentOrSubcommand
- ErrorKind
- Changed
- Allowing empty values is the default again with
ArgSettings::AllowEmptyValues
changing toArgSettings::ForbidEmptyValues
AppSettings::GlobalVersion
renamed toAppSettings::PropagateVersion
and it is not applied globally anymoreArg::env
,Arg::env_os
,Arg::last
,Arg::require_equals
,Arg::allow_hyphen_values
,Arg::hide_possible_values
,Arg::hide_default_value
,Arg::hide_env_values
,Arg::case_insensitive
andArg::multiple_values
does not setArgSettings::TakesValue
anymoreArg::require_delimiter
does not setArgSettings::TakesValue
andArgSettings::UseValueDelimiter
anymoreArg::require_equals
does not disallow empty values anymoreArg::default_value_if
,Arg::default_value_if_os
,Arg::default_value_ifs
,Arg::default_value_ifs_os
now takes the default value parameter as an optionArg::index
,Arg::number_of_values
,Arg::min_values
,Arg::max_values
now takesusize
Arg::value_delimiter
now acceptschar
instead of&str
ArgMatches::is_present
does not handle subcommand names anymore- Some env var values are considered the same as env var not being present when the arg does not have
ArgSettings::TakesValue
clap_generate::generate_to
now returnsResult<PathBuf, io::Error>
@group
inclap_app!
now needs:
instead of=>
app
andarg
objects inyaml
now allow unknown keys if_has_metadata
is set
- Allowing empty values is the default again with
- Added
clap_generate::Shell
clap::Args
behindderive
feature
- Added Methods
- App
App::license
- Arg
Arg::get_long_about
Arg::get_env
Arg::get_default_values
Arg::hide_env
Arg::required_if_eq_all
Arg::forbid_empty_values
Arg::max_occurrences
- ArgMatches
ArgMatches::grouped_values_of
- Macros
crate_license!
- Error
Error::print
- App
- Added Settings
AppSettings::UseLongFormatForHelpSubcommand
AppSettings::IgnoreErrors
AppSettings::InferLongArgs
ArgSettings::HideEnv
- Better completion scripts
- Multiple bug fixes, performance improvements and error message improvements
- Removed
From<&yaml_rust::yaml::Hash>
forArgGroup
- App
App::write_version
in favor ofwrite!(w, App::render_version)
App::write_long_version
in favor ofwrite!(w, App::render_long_version)
- Error
Error::cause
in favor of<Error as Display>::to_string
- Macros
_clap_count_exprs!
- Renamed Methods
- App
App::set_term_width
=>App::term_width
- Arg
Arg::from_yaml
=>Arg::from
Arg::with_name
=>Arg::new
Arg::required_if
=>Arg::required_if_eq
Arg::required_ifs
=>Arg::required_if_eq_any
Arg::required_unless
=>Arg::required_unless_present
Arg::required_unless_one
=>Arg::required_unless_present_any
Arg::required_unless_all
=>Arg::required_unless_present_all
- ArgGroup
ArgGroup::from_yaml
=>ArgGroup::from
ArgGroup::with_name
=>ArgGroup::new
- App
- Renamed Variants
- ErrorKind
ErrorKind::HelpDisplayed
=>ErrorKind::DisplayHelp
ErrorKind::VersionDisplayed
=>ErrorKind::DisplayVersion
- ErrorKind
- Changed
App::print_help
&App::print_long_help
now returnstd::io::Result
App::write_help
&App::write_long_help
now returnstd::io::Result
Error::info
now is of typeVec<String>
instead ofOption<Vec<String>>
ArgMatches::subcommand
now returnsOption<(&str, &ArgMatches)>
short
in#[clap()]
now acceptschar
instead of&str
- Added support for subcommands that are flags (pacman style)
- Added
Indices
that is returned byArgMatches::indices_of
- Added
@global_setting
for app's macro builder - Added Methods
- Arg
Arg::default_missing_value
Arg::default_missing_value_os
Arg::default_missing_values
Arg::default_missing_values_os
Arg::short_alias
Arg::short_aliases
Arg::visible_short_alias
Arg::visible_short_aliases
Arg::value_hint
Arg::validator_regex
(gated behindregex
feature)
- App
App::subcommand_placeholder
App::before_long_help
App::after_long_help
- Arg
- TODO: List App::get_* methods
help_heading
defined onArg
now has higher priority thanApp
- Limited default text wrapping to 100 when
wrap_help
feature is not enabled - Multiple bug fixes and error message improvements
- Size and Performance improvements
- As of this release,
clap
requiresrustc 1.40.0
or greater.
Added std
, cargo
, derive
features.
-
Gated behind
cargo
:- Macros
crate_name!
crate_version!
crate_authors!
crate_description!
app_from_crate!
- Macros
-
Removed
SubCommand
in favor ofApp
SubCommand::with_name
=>App::new
SubCommand::from_yaml
=>App::from
Shell
(changed again in 3.0.0-beta.4)- App
App::with_defaults
App::version_message
in favor ofApp::mut_arg
App::version_short
in favor ofApp::mut_arg
App::help_message
in favor ofApp::mut_arg
App::help_short
in favor ofApp::mut_arg
App::arg_from_usage
in favor ofApp::arg
App::args_from_usage
in favor ofApp::args
App::settings
in favor ofApp::setting(Setting1 | Setting2)
App::unset_settings
in favor ofApp::unset_setting(Setting1 | Setting2)
App::global_settings
in favor ofApp::global_setting(Setting1 | Setting2)
App::gen_completions
in favor of TODO:App::gen_completions_to
in favor of TODO:
- Arg
Arg::empty_values
in favor of TODO:
- ArgMatches
ArgMatches::usage
in favor ofApp::generate_usage
- Macros
arg_enum!
in favor ofArgEnum
derive macro.value_t!
in favor ofArgMatches::value_of_t
value_t_or_exit!
in favor ofArgMatches::value_of_t_or_exit
values_t!
in favor ofArgMatches::values_of_t
values_t_or_exit!
in favor ofArgMatches::values_of_t_or_exit
-
Removed Settings
AppSettings::PropagateGlobalValuesDown
ArgSettings::Global
in favor ofArg::global
methodArgSettings::Multiple
in favor ofArgSettings::MultipleValues
andArgSettings::MultipleOccurrences
-
Renamed Methods
- App
App::from_yaml
=>App::from
App::arg_from_usage
=>App::arg
App::help
=>App::override_help
App::usage
=>App::override_usage
App::template
=>App::help_template
App::get_matches_safe
=>App::try_get_matches
App::get_matches_from_safe
=>App::try_get_matches_from
App::get_matches_from_safe_borrow
=>App::try_get_matches_from_mut
- Arg
Arg::help
=>Arg::about
Arg::from_usage
=>Arg::from
Arg::set
=>Arg::setting
Arg::unset
=>Arg::unset_setting
- App
-
Renamed Settings
ArgSettings::CaseInsensitive
=>ArgSettings::IgnoreCase
ArgSettings::AllowLeadingHyphen
=>ArgSettings::AllowHyphenValues
ArgSettings::EmptyValues
=>ArgSettings::AllowEmptyValues
-
Renamed Fields
Error::message
=>Error::cause
-
Changed
App::write_help
is now a mutable reference instance method (takes&mut self
)Arg::short
now acceptschar
instead of&str
Arg::validator
now takes first argument asFn(&str) -> Result<O, E: ToString>
instead ofFn(String) -> Result<(), String>
Arg::validator_os
now takes first argument asFn(&OsStr) -> Result<O, OsString>
instead ofFn(&OsStr) -> Result<(), OsString>
-
Removed support for
{n}
in help text -
In usage parser, for options
[name]... --option [val]
results inArgSettings::MultipleOccurrences
but--option [val]...
results inArgSettings::MultipleValues
andArgSettings::MultipleOccurrences
. Before both resulted in the same thing. -
App
andArg
now need only one lifetime -
Allowing empty values is no longer the default (changed again in 3.0.0-beta.4)
-
UseValueDelimiter
is no longer the default -
App::override_usage
no longer implies\t
which allows multi lined usages
- Added Methods
- App
App::replace
App::get_matches_mut
App::mut_arg
App::unset_global_setting
App::help_heading
App::stop_custom_headings
- Arg
Arg::exclusive
Arg::multiple_values
Arg::multiple_occurrences
Arg::help_heading
Arg::settings
(changed again in 3.0.0-beta.4)
- App
- Added Settings
AppSettings::HelpRequired
AppSettings::NoAutoHelp
AppSettings::NoAutoVersion
ArgSettings::SubcommandPrecedenceOverArg
- Made
App::arg
andApp::args
more generic - Improvements to
clap_app!
macro to make it support more wider use cases - Colors now work correctly on Windows Console
- Multiple bug fixes and error message improvements
- Improvements to parsing logic and help messages
- Stephen Oats is now a sponsor \o/ (823457c0)
- SPONSORS.md: fixes Josh Triplett's info in the sponsor document (24cb5740)
- Completions: adds completion support for Elvish. (e9d0562a)
- There is a new setting to disable automatic building of
--help
and-h
flags (AppSettings::DisableAutoHelp
)
- arg_matches.rs: add Debug implementations (47192b7a)
- macros: Support shorthand syntax for ArgGroups (df9095e7)
- add debug assertion for missing args in subcommand ArgGroup (2699d9e5)
- Restore compat with Rust 1.21 (6b263de1)
- Don't mention unused subcommands (ef92e2b6)
- OsValues: Add
ExactSizeIterator
implementation (356c69e5) - arg_enum!:
- completions: improve correctness of completions when whitespace is involved (5a08ff29)
- help message: Unconditionally uses long description for subcommands (6acc8b6a, closes #897)
- macros: fixes broken pattern which prevented calling multi-argument Arg methods (9e7a352e)
- parser: Better interaction between AllowExternalSubcommands and SubcommandRequired (9601c95a)
- As of this release,
clap
requiresrustc 1.31.0
or greater.
- As of this release,
clap
requiresrustc 1.21.0
or greater.
- Completions: adds completion support for Elvish. (e9d0562a)
- macros: Support shorthand syntax for ArgGroups (df9095e7)
- OsValues: Add
ExactSizeIterator
implementation (356c69e5) - arg_enum!: Invalid expansions of some trailing-comma patterns (7023184f)
- help message: Unconditionally uses long description for subcommands (6acc8b6a, closes #897)
- Refer to macOS rather than OSX. (ab0d767f)
- Fish Completions: fixes a bug that only allowed a single completion in in Fish Shell (e8774a8, closes #1212)
- AllowExternalSubcommands: fixes a bug where external subcommands would be blocked by a similarly named subcommand (suggestions were getting in the way). (a410e85)
- Fixes some typos in the
README.md
(c8e685d7)
- AllowMissingPositional: improves the ability of AllowMissingPositional to allow 'skipping' to the last positional arg with '--' (df20e6e2)
- Arg Indices: adds the ability to query argument value indices (f58d0576)
- Indices: implements an Indices<Item=&usize> iterator (1e67be44)
- Raw Args adds a convenience function to
Arg
that allows implying all ofArg::last
Arg::allow_hyphen_values
andArg::multiple(true)
(66a78f29)
- Fix some typos and markdown issues. (935ba0dd)
- Arg Indices: adds the documentation for the arg index querying methods (50bc0047)
- 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)
- Values: improves the docs example of the Values iterator (74075d65)
- Updates readme to hint that the
wrap_help
feature is a thing (fc7ab227)
- Cargo.toml: use codegen-units = 1 in release and bench profiles (19f425ea)
- Adds WASM support (clap now compiles on WASM!) (689949e5)
- Uses the short help tool-tip for PowerShell completion scripts (ecda22ce)
- YAML: Adds a missing conversion from
Arg::last
when instantiating from a YAML file (aab77c81a5, closes #1160)
- Bash Completions: instead of completing a generic option name, all bash completions fall back to file completions UNLESS
Arg::possible_values
was used (872f02ae) - Deps: No longer needlessly compiles
ansi_term
on Windows since its not used (b57ee946, closes #1155) - Help Message: changes the
[values: foo bar baz]
array to[possible values: foo bar baz]
for consistency with the API (414707e4e97, closes #1160)
- Overrides Self: fixes a bug where options with multiple values couldn't ever have multiple values (d95907cf)
- Requirements: fixes an issue where conflicting args would still show up as required (e06cefac, closes #1158)
- Fixes a bug which disallows proper nesting of
--
(73993fe, closes #1161)
- AllArgsOverrideSelf: adds a new convenience setting to allow all args to override themselves (4670325d)
- completions/zsh.rs:
- further debloating by removing generics from error cases (eb8d919e)
- debloats clap by deduplicating logic and refactors (03e413d7)
- fixes the ripgrep benchmark by adding a value to a flag that expects it (d26ab2b9)
- bash completion: Change the bash completion script code generation to support hyphens. (ba7f1d18)
- completions/zsh.rs: Fix completion of long option values (46365cf8)
- 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)
The 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!
- changes the demo version to 2.28 to stay in sync (ce6ca492)
- Fix URL path to github hosted files (ce72aada, closes #1106)
- fix typo (002b07fc)
- README.md: updates the readme and pulls out some redundant sections (db6caf86)
- adds '[SUBCOMMAND]' to usage strings with only AppSettings::AllowExternalSubcommands is used with no other subcommands (e78bb757, closes #1093)
- Adds Arg::case_insensitive(bool) which allows matching Arg::possible_values without worrying about ASCII case (1fec268e, closes #1118)
- Adds the traits to be used with the clap-derive crate to be able to use Custom Derive (6f4c3412)
- Fixes a regression where --help couldn't be overridden (a283d69f, closes #1112)
- fixes a bug that allowed options to pass parsing when no value was provided (2fb75821, closes #1105)
- ignore PropagateGlobalValuesDown deprecation warning (f61ce3f5, closes #1086)
- Updates
bitflags
to 1.0
- Adds
term_size
as an optional dependency (with featurewrap_help
) to fix compile bug
** This release raises the minimum required version of Rust to 1.18 **
** This release also contains a very minor breaking change to fix a bug **
The only CLIs affected will be those using unrestrained multiple values and subcommands where the subcommand name can coincide with one of the multiple values.
See the commit 0c223f54 for full details.
- Values from global args are now propagated UP and DOWN!
- fixes a bug where using AppSettings::AllowHyphenValues would allow invalid arguments even when there is no way for them to be valid (77ed4684, closes #1066)
- when an argument requires a value and that value happens to match a subcommand name, its parsed as a value (0c223f54, closes #1031, breaks #, #)
- fixes a bug that prevented number_of_values and default_values to be used together (5eb342a9, closes #1050, #1056)
- fixes a bug that didn't allow args with default values to have conflicts (58b5b4be, closes #1071)
- fixes a panic when using global args and calling App::get_matches_from_safe_borrow multiple times (d86ec797, closes #1076)
- fixes issues and potential regressions with global args values not being propagated properly or at all (a43f9dd4, closes #1010, #1061, #978)
- fixes a bug where default values are not applied if the option supports zero values (9c248cbf, closes #1047)
- adds additional blurbs about using multiples with subcommands (03455b77)
- updates the docs to reflect changes to global args and that global args values can now be propagated back up the stack (ead076f0)
- add html_root_url attribute (e67a061b)
- sync README version numbers with crate version (5536361b)
- args that have require_delimiter(true) is now reflected in help and usage strings (dce61699, closes #1052)
- if all subcommands are hidden, the subcommands section of the help message is no longer displayed (4ae7b046, closes #1046)
- when an argument requires a value and that value happens to match a subcommand name, its parsed as a value (0c223f54, closes #1031, breaks #, #)
- AppSettings::PropagateGlobalValuesDown: this setting is no longer required to propagate values down or up (2bb5ddce)
- if all subcommands are hidden, the subcommands section of the help message is no longer displayed (4ae7b046, closes #1046)
- fixes a bug where default values are not applied if the option supports zero values (9c248cbf, closes #1047)
- fixes using require_equals(true) and min_values(0) together (10ae208f, closes #1044)
- escape special characters in zsh and fish completions (87e019fc)
- avoid panic generating default help msg if term width set to 0 due to bug in textwrap 0.7.0 (b3eadb0d)
- Change
who's
->whose
(53c1ffe8) - adds a debug assertion to ensure all args added to groups actually exist (7ad123e2, closes #917)
- fixes a bug where args that allow values to start with a hyphen couldn't contain a double hyphen -- as a value (ab2f4c9e, closes #960)
- fixes a bug where positional argument help text is misaligned (54c16836)
- Help Message: fixes long_about not being usable (a8257ea0, closes #1043)
- Suggestions: output for flag after subcommand (434ea5ba)
Minimum version of Rust is now v1.13.0 (Stable)
- bumps unicode-segmentation to v1.2 (cd7b40a2)
- update textwrap to version 0.7.0 (c2d4e637)
- impl Default for Values + OsValues for any lifetime. (fb7d6231f1)
- Various documentation typos and grammar fixes
- use textwrap crate for wrapping help texts (b93870c1)
- Suggestions: suggests to use flag after subcommand when applicable (2671ca72)
- Bumps bitflags crate to v0.9
- Change
who's
->whose
(53c1ffe8)
- App::template: adds details about the necessity to use AppSettings::UnifiedHelpMessage when using {unified} tags in the help template (cbea3d5a, closes #949)
- Arg::allow_hyphen_values: updates the docs to include warnings for allow_hyphen_values and multiple(true) used together (f9b0d657)
- README.md:
- clap_app!: adds using the @group specifier to the macro docs (826048cb, closes #932)
- adds a debug assertion to ensure all args added to groups actually exist (14f6b8f3, closes #917)
- fixes a bug where args that allow values to start with a hyphen couldn't contain a double hyphen -- as a value (ebf73a09, closes #960)
- fixes a bug where positional argument help text is misaligned (54c16836)
- App::template: adds details about the necessity to use AppSettings::UnifiedHelpMessage when using {unified} tags in the help template (cf569438, closes #949)
- Arg::allow_hyphen_values: updates the docs to include warnings for allow_hyphen_values and multiple(true) used together (ded5a2f1)
- clap_app!: adds using the @group specifier to the macro docs (fe85fcb1, closes #932)
- fixes a bug where args with last(true) and required(true) set were not being printed in the usage string (3ac533fe, closes #944)
- fixes a bug that was printing the arg name, instead of value name when Arg::last(true) was used (e1fe8ac3, closes #940)
- fixes a bug where flags were parsed as flags AND positional values when specific combinations of settings were used (20f83292, closes #946)
- README.md: fix some typos (fa34deac)
- Arg: add
default_value_os
(d5ef8955) - arg_matches.rs: Added a Default implementation for Values and OsValues iterators. (0a4384e3)
- PowerShell Completions: fixes a bug where powershells completions cant be used if no subcommands are defined (a8bce558, closes #931)
- bumps term_size to take advantage of better terminal dimension handling (e05100b7)
- PowerShell Completions: massively dedups subcommand names in the generate script to make smaller scripts that are still functionally equiv (85b0e1cc)
- Fix a typo the minimum rust version required (71dabba3)
- fixes a missing newline character in the autogenerated help and version messages in some instances (5ae9007d)
App::long_about
App::long_version
App::print_long_help
App::write_long_help
App::print_long_version
App::write_long_version
Arg::long_help
- allows distinguishing between short and long version messages (-V/short or --version/long) (59272b06)
- allows distinguishing between short and long help with subcommands in the same manner as args (6b371891)
- allows specifying a short help vs a long help (i.e. varying levels of detail depending on if -h or --help was used) (ef1b24c3)
- clap_app!: adds support for arg names with hyphens similar to longs with hyphens (f7a88779, closes #869)
- clap_app!: documents the
--("some-arg")
method for using args with hyphens inside them (bc08ef3e, closes #919)
- Custom Usage Strings: fixes the usage string regression when using help templates (0e4fd96d)
- usage: fixes a big regression with custom usage strings (2c41caba)
- App::name: adds the ability to change the name of the App instance after creation (d49e8292, closes #908)
- Arg::hide_default_value: adds ability to hide the default value of an argument from the help string (89e6ea86, closes #902)
- yaml: adds support for loading author info from yaml (e04c390c)
- add fish subcommand help support (f8f68cf8)
- options that use
require_equals(true)
now display the equals sign in help messages, usage strings, and errors" (c8eb0384, closes #903)
- setting the max term width now correctly propagates down through child subcommands
- ArgRequiredElseHelp: fixes the precedence of this error to prioritize over other error messages (74b751ff, closes #895)
- Positionals: fixes some regression bugs resulting from old asserts in debug mode. (9a3bc98e, closes #896)
- doesn't run
arg_post_processing
on multiple values anymore (ec516182) - changes internal use of
VecMap
toVec
for matched values ofArg
s (22bf137a) - 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) - refactor to remove unneeded vectors and allocations and checks for significant performance increases (0efa4119)
- Fix examples link in CONTRIBUTING.md (60cf875d)
- when
AppSettings::SubcommandsNegateReqs
andArgsNegateSubcommands
are used, a new more accurate double line usage string is shown (50f02300, closes #871)
- 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, closes #888) - provides
default_value_os
anddefault_value_if[s]_os
(0f2a3782, closes #849) - provides
App::help_message
andApp::version_message
which allows one to override the auto-generated help/version flag associated help (389c413, closes #889)
- 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, closes #863)
- doesn't print the argument sections in the help message if all args in that section are hidden (ce5ee5f5)
- doesn't include the various [ARGS] [FLAGS] or [OPTIONS] if the only ones available are hidden (7b4000af, closes #882)
- now correctly shows subcommand as required in the usage string when AppSettings::SubcommandRequiredElseHelp is used (8f0884c1)
- fixes some memory leaks when an error is detected and clap exits (8c2dd287)
- fixes a trait that's marked private accidentally, but should be crate internal public (1ae21108)
- Completions: fixes a bug that tried to propagate global args multiple times when generating multiple completion scripts (5e9b9cf4, closes #846)
- Options: adds the ability to require the equals syntax with options --opt=val (f002693d, closes #833)
- clap_app!: fixes a critical bug of a missing fragment specifier when using
!property
style tags. (5635c1f94)
- Completions: fixes a bug that tried to propagate global args multiple times when generating multiple completion scripts (5e9b9cf4, closes #846)
- Fix examples link in CONTRIBUTING.md (60cf875d)
- Macros: adds a warning about changing values in Cargo.toml not triggering a rebuild automatically (112aea3e, closes #838)
- fixes a println->debugln typo (279aa62e)
- fixes bash completions for commands that have an underscore in the name (7f5cfa72, closes #581)
- fixes a bug where ZSH completions would panic if the binary name had an underscore in it (891a2a00, closes #581)
- allow final word to be wrapped in wrap_help (564c5f0f, closes #828)
- fixes a bug where global args weren't included in the generated completion scripts (9a1e006e, closes #841)
- fixes a critical bug where subcommand settings were being propagated too far (74648c94, closes #832)
- adds ArgGroup::multiple to the supported YAML fields for building ArgGroups from YAML (d8590037, closes #840)
- allow final word to be wrapped in wrap_help (564c5f0f, closes #828)
- actually show character in debug output (84d8c547)
- include final character in line length (aff4ba18)
- updates libc and term_size deps for the libc version conflict (6802ac4a)
- fix link from app_from_crate! to crate_authors! (#822) (5b29be9b)
- fix spelling of "guaranteed" (4f30a65b)
- ArgsNegateSubcommands: disables args being allowed between subcommands (5e2af8c9, closes #793)
- DontCollapseArgsInUsage: disables the collapsing of positional args into
[ARGS]
in the usage string (c2978afc, closes #769) - DisableHelpSubcommand: disables building the
help
subcommand (a10fc859) - AllowMissingPositional: allows one to implement
$ prog [optional] <required>
style CLIs where the second positional argument is required, but the first is optional (1110fdc7, closes #636) - PropagateGlobalValuesDown: automatically propagats global arg's values down through used subcommands (985536c8, closes #694)
- Arg::value_terminator: adds the ability to terminate multiple values with a given string or char (be64ce0c, closes #782)
- Arg::default_value_if[s]: adds new methods for conditional default values (such as a particular value from another argument was used) (eb4010e7)
- Arg::requires_if[s]: adds the ability to conditionally require additional args (such as if a particular value was used) (198449d6)
- 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)
- Arg::validator_os: adds ability to validate values which may contain invalid UTF-8 (47232498)
- crate_description!: Uses the
Cargo.toml
description field to fill in theApp::about
method at compile time (4d9a82db, closes #778) - crate_name!: Uses the
Cargo.toml
name field to fill in theApp::new
method at compile time (4d9a82db, closes #778) - app_from_crate!: Combines
crate_version!
,crate_name!
,crate_description!
, andcrate_authors!
into a single macro call to build a defaultApp
instance from theCargo.toml
fields (4d9a82db, closes #778)
- no_cargo: adds a
no_cargo
feature to disable Cargo-env-var-dependent macros for those not usingcargo
to build their crates (#786) (6fdd2f9d)
- Options: fixes a critical bug where options weren't forced to have a value (5a5f2b1e, closes #665)
- fixes a bug where calling the help of a subcommand wasn't ignoring required args of parent commands (d3d34a2b, closes #789)
- Help Subcommand: fixes a bug where the help subcommand couldn't be overridden (d34ec3e0, closes #787)
- Low Index Multiples: fixes a bug which caused combinations of LowIndexMultiples and
Arg::allow_hyphen_values
to fail parsing (26c670ca)
- Default Values: improves the error message when default values are involved (1f33de54, closes #774)
- YAML: adds conditional requirements and conditional default values to YAML (9a4df327, closes #764)
- Support
--("some-arg-name")
syntax for defining long arg names when usingclap_app!
macro (f41ec962) - Support
("some app name")
syntax for defining app names when usingclap_app!
macro (9895b671, closes #759) - Help Wrapping: long app names (with spaces), authors, and descriptions are now wrapped appropriately (ad4691b7, closes #777)
- Conditional Default Values: fixes the failing doc tests of Arg::default_value_ifs (4ef09101)
- Conditional Requirements: adds docs for Arg::requires_ifs (7f296e29)
- README.md: fix some typos (f22c21b4)
- src/app/mod.rs: fix some typos (5c9b0d47)
- fixes a bug where calling the help of a subcommand wasn't ignoring required args of parent commands (a0ee4993, closes #789)
- Examples: adds subcommand examples (0e0f3354, closes #766)
- README.md: adds guidance on when to use ~ in version pinning, and clarifies breaking change policy (591eaefc, closes #765)
- Help Messages: fixes help message alignment when specific settings are used on options (cd94b318, closes #760)
- Bash Completion: allows bash completion to fall back to traditional bash completion upon no matching completing function (b1b16d56))
- allows specifying AllowLeadingHyphen style values, but only for specific args vice command wide (c0d70feb, closes #742)
- Required Unless: fixes a bug where having required_unless set doesn't work when conflicts are also set (d20331b6, closes #753)
- ZSH Completions: fixes an issue where zsh completions caused panics if there were no subcommands (49e7cdab, closes #754)
- updates the docs landing page (01e1e33f)
- adds the macro version back to the readme (45eb9bf1)
- fix broken docs links (808e7cee)
- Compatibility Policy: adds an official compatibility policy to (760d66dc, closes #740)
- Contributing: updates the readme to improve the readability and contributing sections (eb51316c)
- Low Index Multiples: fixes a bug where using low index multiples was propagated to subcommands (33924e88, closes #725)
- Positional Args: allows specifying the second to last positional argument as multiple(true) (1ced2a74, closes #725)
- Error Output: conflicting errors are now symmetrical, meaning more consistent and less confusing (3d37001d, closes #718)
- Fix typo in example
13a_enum_values_automatic
(c22fbc07) - README.md: fixes failing yaml example (#715) (21fba9e6)
- ZSH Completions: fixes bug that caused panic on subcommands with aliases (5c70e1a0, closes #714)
- debug: fixes the debug feature (#716) (6c11ccf4)
- Derive display order after propagation (9cb6facf, closes #706)
- yaml-example: inconsistent args (847f7199)
- Help Message: fixes a regression bug where args with multiple(true) threw off alignment (ebddac79, closes #702)
- app/settings.rs: moves variants to roughly alphabetical order (9ed4d4d7)
- Improve documentation around features (4ee85b95)
- reword docs for ErrorKind and app::Settings (3ccde7a4)
- fix tests that fail when the "suggestions" feature is disabled (996fc381)
- fix the OsString-using doc-tests (af9e1a39)
- tag non-rust code blocks as such instead of ignoring them (0ba9f4b1)
- ErrorKind: improve some errors about subcommands (9f6217a4)
- yaml: make sure the doc-tests don't fail before "missing file" (8c0f5551)
- Stabilize clap_app! (cd516006)
- with_defaults: Deprecate App::with_defaults() (26085409, closes #638)
- fixes a bug that made determining when to auto-wrap long help messages inconsistent (468baadb, closes #688)
- Completions: fish completions for nested subcommands (a61eaf8a)
- features: Make lints not enable other nightly-requiring features (835f75e3)
- arg_aliases: Ability to alias arguments (33b5f6ef, closes #669)
- flag_aliases: Ability to alias flags (40d6dac9)
- typo (bac417fa)
- updates README.md with new website information and updated video tutorials info (0c19c580)
- updates the docs about removing implicit value_delimiter(true) (c81bc722)
- Default Values: adds better examples on using default values (57a8d9ab, closes #418)
- Value Delimiters: fixes the confusion around implicitly setting value delimiters. (default is now
false
) (09d4d0a9, closes #666)
- Help Wrapping: fixes a regression-bug where the old {n} newline char stopped working (92ac353b, closes #661)
- Help: adds ability to hide the possible values on a per argument basis (9151ef73, closes #640)
- help: allow for limiting detected terminal width (a43e28af, closes #653)
- Help Wrapping: removes the verbage about using
'{n}'
to insert newlines in help text (c5a2b352) - Value Delimiters: updates the docs for the Arg::multiple method WRT value delimiters and default settings (f9d17a06)
- appsettings: Document AppSetting::DisableVersion (94501965, closes #589)
- AllowLeadingHyphen: fixes a bug where valid args aren't recognized with this setting (a9699e4d, closes #588)
- Help Wrapping:
- Value Delimiters: changes the default value delimiter rules (f9e69254, closes #655)
- YAML: supports setting Arg::require_delimiter from YAML (b9b55a39)
- help: fix redundant contains() checks (a8afed74)
- Help Wrapping: removes the verbage about using
'{n}'
to insert newlines in help text (c5a2b352)
- Help Wrapping:
- YAML: supports setting Arg::require_delimiter from YAML (b9b55a39)
- Help Wrapping: makes some minor changes to when next line help is automatically used (5658b117)
- Settings: fixes an issue where settings weren't propagated down through grandchild subcommands (b3efc107, closes #638)
- Errors: Errors with custom description (58512f2f)
- help: use term_size instead of home-grown solution (fc7327e9)
- Groups: fixes some usage strings that contain both args in groups and ones that conflict with each other (3d782def, closes #616)
- Completions: uses standard conventions for bash completion files, namely '{bin}.bash-completion' (27f5bbfb, closes #567)
- 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, closes #597)
- YAML Errors: vastly improves error messages when using YAML (f43b7c65, closes #574)
- adds App::with_defaults to automatically use crate_authors! and crate_version! macros (5520bb01, closes #600)
- Help Wrapping: fixes a bug where help is wrapped incorrectly and causing a panic with some non-English characters (d0b442c7, closes #626)
- Help: adds new short hand way to use source formatting and ignore term width in help messages (7dfdaf20, closes #625)
- Term Width: adds details about set_term_width(0) (00b8205d)
- Unicode: fixes two bugs where non-English characters were stripped or caused a panic with help wrapping (763a5c92, closes #626)
- Help Subcommand: fixes misleading usage string when using multi-level subcommmands (e203515e, closes #618)
- Completions: one can generate a basic fish completions script at compile time (1979d2f2)
- parser: preserve external subcommand name (875df243)
- parser: preserve external subcommand name (875df243)
- YAML: fixes example 17's incorrect reference to arg_groups instead of groups (b6c99e13, closes #601)
- fixes bug where only first arg in list of required_unless_one is recognized (1fc3b55b, closes #575)
- Settings: fixes typo subcommandsrequired->subcommandrequired (fc72cdf5, closes #593)
- Completions: adds the ability to generate completions to io::Write object (9f62cf73)
- Settings: Add unset_setting and unset_settings fns to App (#598) (0ceba231, closes #590)
- Completions: fixes the formatting of the Cargo.toml excerpt in the completions example (722f2607)
- Completions: fixes bug where --help and --version short weren't added to the completion list (e9f2438e, closes #536)
- Completions: allows multiple completions to be built by namespacing with bin name (57484b2d)
- Completions:
- Completions:
- one can now generate a bash completions script at compile time! (e75b6c7b, closes #376)
- completions now include aliases to subcommands, including all subcommand options (0ab9f840, closes #556)
- completions now continue completing even after first completion (18fc2e5b)
- allows matching on possible values in options (89cc2026, closes #557)
- AllowLeadingHyphen: fixes an issue where isn't ignored like it should be with this setting (96c24c9a, closes #558)
- Arg: adds new setting
Arg::require_delimiter
which requires val delimiter to parse multiple values (920b5595)
- Declare term::Winsize as repr(C) (5d663d90)
- Arg: adds docs for (49af4e38)
- Options:
- fix typos (43b3d40b)
- ArgGroup: vastly improves ArgGroup docs by adding better examples (9e5f4f5d, closes #534)
- App: using
App::print_help
now prints the same as would have been printed by--help
or the like (e84cc018, closes #536) - Help:
- ArgGroup: Add multiple ArgGroups per Arg (902e182f, closes #426)
- Usage Strings:
[FLAGS]
and[ARGS]
are no longer blindly added to usage strings (9b2e45b1, closes #537) - arg_enum!: allows using meta items like repr(C) with arg_enum!s (edf9b233, closes #543)
- removes extra newline from help output (86e61d19)
- allows printing version to any io::Write object (921f5f79)
- removes extra newline when printing version (7e2e2cbb)
- Aliases: improves readability of asliases in help messages (ca511de7, closes #526, #529)
- Usage Strings: improves the default usage string when only a single positional arg is present (ec86f2da, closes #518)
- Help: allows wrapping at specified term width (Even on Windows!) (1761dc0d, closes #451)
- Settings:
- Subcommands: adds support for visible aliases (7b10e7f8, closes #522)
- fixes bug where args are printed out of order with templates (05abb534)
- fixes bug where one can't override version or help flags (90d7d6a2, closes #514)
- fixes issue where before_help wasn't printed (b3faff60)
- Help:
App::before_help
andApp::after_help
now correctly wrap (1f4da767, closes #516) - Settings: fixes bug where new color settings couldn't be converted from strs (706a7c11)
- Subcommands: subcommands with aliases now display help of the aliased subcommand (5354d14b, closes #521)
- Windows: fixes a failing windows build (01e7dfd6)
- YAML: adds missing YAML methods for App and Arg (e468faf3, closes #528)
- removes extra newline from help output (86e61d19)
- allows printing version to any io::Write object (921f5f79)
- removes extra newline when printing version (7e2e2cbb)
- fixes bug where args are printed out of order with templates (3935431d)
- fixes bug where one can't override version or help flags (90d7d6a2, closes #514)
- fixes issue where before_help wasn't printed (b3faff60)
- inter-links all types and pages (3312893d, closes #505)
- makes all publicly available types viewable in docs (52ca6505)
- Subcommand Aliases: fixes lifetime issue when setting multiple aliases at once (ac42f6cf0)
- SubCommand Aliases: adds feature to yaml configs too (69592195)
- Usage Strings:
- Groups: formats positional args in groups in a better way (fef11154)
- Help:
- Ghost Release
- Ghost Release
- Help: adds support for displaying info before help message (29fbfa3b)
- Required: adds allowing args that are required unless certain args are present (af1f7916)
- hides formatting from docs (cb708093)
- required_unless: adds docs and examples for required_unless (ca727b52)
- Required Args: fixes issue where missing required args are sometimes duplicated in error messages (3beebd81, closes #492)
- macros.rs: Added write_nspaces macro (a new version of write_spaces) (9d757e86)
- parser.rs:
- src/args: Exposes argument display order by introducing a new Trait (1321630e)
- srs/args: Added longest_filter to AnyArg trait (65b3f667)
- HELP: Adjust Help to semantic changes introduced in 6933b84 (8d23806b)
- Empty Values: fixes bug where empty values weren't stored (885d166f, closes #470)
- Help Message: fixes bug where arg name is printed twice (71acf1d5, closes #472)
- fixes compiling with debug cargo feature (d4b55450)
- Empty Values: fixes bug where empty values weren't stored (885d166f, closes #470)
- Help Subcommand: fixes issue where help and version flags weren't properly displayed (205b07bf, closes #466)
- Help Message: fixes bug with wrapping in the middle of a unicode sequence (05365ddc, closes #456)
- Usage Strings: fixes small bug where -- would appear needlessly in usage strings (6933b849, closes #461)
- Help Message: can auto wrap and aligning help text to term width (e36af026, closes #428)
- Help Subcommand: adds support passing additional subcommands to help subcommand (2c12757b, closes #416)
- Opts and Flags: adds support for custom ordering in help messages (9803b51e)
- Settings: adds support for automatically deriving custom display order of args (ad86e433, closes #444)
- Subcommands: adds support for custom ordering in help messages (7d2a2ed4, closes #442)
- From Usage: fixes a bug where adding empty lines weren't ignored (c5c58c86)
- AppSettings: clarifies that AppSettings do not propagate (3c8db0e9, closes #429)
- Arg Examples: adds better examples (1e79cccc)
- Default Values: adds better examples and notes for default values (9facd74f)
- Multiple Values: fixes bug where number_of_values wasn't respected (72c387da)
- adds support for building ArgGroups from standalone YAML (fcbc7e12)
- Stop lonely hyphens from causing panic (85b11468, closes #410)
- AppSettings: fixes bug where subcmds didn't receive parent ver (a62e4527)
- values: adds support for up to u64::max values per arg (c7abf7d7)
- occurrences: Allow for more than 256 occurrences of an argument. (3731ddb3)
- AppSettings: adds HidePossibleValuesInHelp to skip writing those values (cdee7a0e)
- value_t_or_exit: fixes typo which causes value_t_or_exit to return a Result (ee96baff)
- arg_enum: enum declared with arg_enum returns [&'static str; #] instead of Vec (9c4b8a1a)
- clap_app! should be gated by unstable, not nightly feature (0c8b84af)
- SubCommands: fixed where subcmds weren't recognized after mult args (c19c17a8, closes #405)
- Usage Parser: fixes a bug where literal single quotes weren't allowed in help strings (0bcc7120, closes #406)
- adds support for external subcommands (177fe5cc, closes #372)
- adds support values with a leading hyphen (e4d429b9, closes #385)
- adds support for turning off the value delimiter (508db850, closes #352)
- adds support changing the value delimiter (dafeae8a, closes #353)
- adds support for comma separated values (e69da6af, closes #348)
- adds support with options with optional values (4555736c, closes #367)
- UTF-8: adds support for invalid utf8 in values (c5c59dec, closes #269)
- v2: implementing the base of 2.x (a3536054)
- fixes nightly build with new lints (17599195)
- fixes Windows build for 2x release (674c9b48, closes #392)
- fixes yaml build for 2x base (adceae64)
- updates examples for 2x release (1303b360, closes #394)
- updates examples for 2x release (0a011f31, closes #394)
- updates documentation for v2 release (8d51724e)
- updating docs for 2x release (576d0e0e)
- README.md:
- Fewer lifetimes! Yay!
App<'a, 'b, 'c, 'd, 'e, 'f>
=>App<'a, 'b>
Arg<'a, 'b, 'c, 'd, 'e, 'f>
=>Arg<'a, 'b>
ArgMatches<'a, 'b>
=>ArgMatches<'a>
- Simply Renamed
App::arg_group
=>App::group
App::arg_groups
=>App::groups
ArgGroup::add
=>ArgGroup::arg
ArgGroup::add_all
=>ArgGroup::args
ClapError
=>Error
- struct field
ClapError::error_type
=>Error::kind
ClapResult
=>Result
ClapErrorType
=>ErrorKind
- Removed Deprecated Functions and Methods
App::subcommands_negate_reqs
App::subcommand_required
App::arg_required_else_help
App::global_version(bool)
App::versionless_subcommands
App::unified_help_messages
App::wait_on_error
App::subcommand_required_else_help
SubCommand::new
App::error_on_no_subcommand
Arg::new
Arg::mutually_excludes
Arg::mutually_excludes_all
Arg::mutually_overrides_with
simple_enum!
- Renamed Error Variants
InvalidUnicode
=>InvalidUtf8
InvalidArgument
=>UnknownArgument
- Usage Parser
- Value names can now be specified inline, i.e.
-o, --option <FILE> <FILE2> 'some option which takes two files'
- 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
ArgMatches::values_of
returns anValues
now which implementsIterator
(should not break any code)crate_version!
returns&'static str
instead ofString
- Using the
clap_app!
macro requires compiling with theunstable
feature because the syntax could change slightly in the future
- fixes an issue where invalid short args didn't cause an error (c9bf7e44)
- prints the name in version and help instead of binary name (8f3817f6, closes #368)
- fixes an intentional panic issue discovered via clippy (ea83a3d4)
- 17_yaml: conditinonally compile 17_yaml example (575de089)
- clippy improvements (99cdebc2)
- errors: return correct error type in WrongNumValues error builder (5ba8ba9d)
- ArgRequiredElseHelp setting now takes precedence over missing required args (faad83fb, closes #362)
- Errors: fixes some instances when errors are missing a final newline (c4d2b171)
- Errors: fixes a compiling bug when built on Windows or without the color feature (a35f7634)
- Required Args: fixes a bug where required args are not correctly accounted for (f03b88a9, closes #343)
- fixes a bug with required positional args in usage strings (c6858f78)
- FAQ: updates readme with slight changes to FAQ (a4ef0fab)
- massive errors overhaul (cdc29175)
- ArgMatcher: huge refactor and deduplication of code (8988853f)
- Errors: errors have been vastly improved (e59bc0c1)
- Traits: refactoring some configuration into traits (5800cdec)
- App:
- Clarify behavior of Arg::multiple with options. (434f497a)
- Fix typos and improve grammar. (c1f66b5d)
- Error Status: fixes bug where --help and --version return non-zero exit code (89b51fdf)
- Errors: tones down quoting in some error messages (34ce59ed, closes #309)
- Help and Version: only builds help and version once (e3be87cf)
- Option Args: fixes bug with args and multiple values (c9a9548a, closes #323)
- POSIX Overrides: fixes bug where required args are overridden (40ed2b50)
- Safe Matches: using 'safe' forms of the get_matches family no longer exit the process (c47025dc, closes #256)
- Versionless SubCommands: fixes a bug where the -V flag was needlessly built (27df8b9d, closes #329)
- fixes crash on invalid arg error (c78ce128)
- clean up some formatting (b7df92d7)
- move the crate-level docs to top of the lib.rs file (d7233bf1)
- changes doc comments to rustdoc comments (34b601be)
- fixes panic in 14_groups example (945b00a0, closes #295)
- avoid suggesting star dependencies. (d33228f4)
- Rustdoc: adds portions of the readme to main rustdoc page (6f9ee181, closes #293)
- grammar error in some conflicting option errors (e73b07e1)
- Unified Help: sorts both flags and options as a unified category (2a223dad)
- Usage: fixes a bug where required args aren't filtered properly (72b453dc, closes #277)
- Usage Strings: fixes a bug ordering of elements in usage strings (aaf0d6fe, closes #298)
- supports -aValue style options (0e3733e4)
- Trailing VarArg: adds opt-in setting for final arg being vararg (27018b18, closes #278)
- allows accessing arg values by group name (c92a4b9e)
- use links to examples instead of plain text (bb4fe237)
- Help Message: required args no longer double list in usage (1412e639, closes #277)
- Possible Values: possible value validation is restored (f121ae74, closes #287)
- add clap_app quick example (4ba6249c)
- Unicode: allows non-panicking on invalid unicode characters (c5bf7ddc)
- properly names Examples section for rustdoc (87ba5445)
- fixes various typos and spelling (f85640f9)
- Arg: unhides fields of the Arg struct (931aea88)
- allows printing help message by library consumers (56b95f32)
- allows defining hidden args and subcmds (2cab4d03, closes #231)
- Builder macro to assist with App/Arg/Group/SubCommand building (443841b0)
- Errors: allows consumers to write to stderr and exit on error (1e6403b6)
- fixes a bug where the help subcommand wasn't overridable (94003db4)
- adds ability not consume self when parsing matches and/or exit on help (94003db4)
- App: Added ability for users to handle errors themselves (934e6fbb)
- 17_yaml: fixed example (9b848622)
- YAML: allows building a CLI from YAML files (86cf4c45)
- ArgGroups: adds support for building ArgGroups from yaml (ecf88665)
- Subcommands: adds support for subcommands from yaml (e415cf78)
- YAML: adds examples for using YAML to build a CLI (ab41d7f3)
- Args from YAML: fixes doc examples (19b348a1)
- Examples: adds better usage examples instead of having unused variables (8cbacd88)
- Add AppSettings example (12705079)
- Args: allows opts and args to define a name for help and usage msgs (ad962ec4)
- Possible Values: fixes a bug where suggestions aren't made when using --long=value format (3d5e9a6c, closes #192)
- fixed confusing error message, also added test for it (fc7a31a7)
- App: fixed requirmets overriding (9c135eb7)
- README.md: updates for new features (16cf9245)
- implements posix compatible conflicts for long args (8c2d48ac)
- added overrides to support conflicts in POSIX compatible manner (0b916a00)
- Args: allows defining POSIX compatible argument conflicts (d715646e)
- fixed links in cargo and license buttons (6d9837ad)
- Args and Apps: changes HashSet->Vec in some instances for increased performance (d0c3b379)
- AppSettings: adds ability to add multiple settings at once (4a00e251)
- Replace application level settings with enum variants (618dc4e2)
- Args: allows for custom argument value validations to be defined (84ae2ddb, closes #170)
- fixes two bugs in App when printing newlines in help and subcommands required error (d63c0136)
- removes some unneeded allocations (93e915df)
- Usage Strings displays a [--] when it may be helpful (86c3be85)
- Macros fixes a typo in a macro generated error message (c9195c5f)
- Type Errors fixes formatting of error output when failed type parsing (fe5d95c6)
- updates README.md to include lack of color support on Windows (52f81e17)
- fixes a bug when parsing multiple {n} newlines inside help strings (6d214b54)
- allows creating unified help messages, a la docopt or getopts (52bcd892, closes #158)
- allows stating all subcommands should not have --version flags (336c476f, closes #156)
- allows setting version number to auto-propagate through subcommands (bc66d3c6, closes #157)
- Help Messages big performance improvements when printing help messages (52bcd892)
- updates readme with new features (8232f7bb)
- fix incorrect code example for
App::subcommand_required
(8889689d)
- README.md updates example help message to new format (0aca29bd)
- README.md adds new features to what's new list (938f7f01)
- README.md use with_name for subcommands (28b7e316)
- args can now be parsed from arbitrary locations, not just std::env::args() (75312528)
- allows waiting for user input on error (d0da3bdd, closes #140)
- Help allows one to fully override the auto-generated help message (26d5ae3e, closes #141)
- adds "whats new" section to readme (ff149a29)
- removes deprecated functions in prep for 1.0 (274484df)
- updates docs to new version flag defaults (ebf442eb)
- Help and Version default short for version is now
-V
but can be overridden (only breaks manual documentation) (BREAKING CHANGE eb1d9320)
- adds contributing guidelines (6f76bd0a)
- can now specify that an app or subcommand should display help on no args or subcommands (29ca7b2f, closes #133)
- SubCommand/App several methods and functions for stable release (28b73855)
- updates for deprecations and new features (743eefe8)
- help fixes a bug where requirements are included as program name in help and version (08ba3f25)
- usage usage strings now include parent command requirements (dd8f21c7, closes #125)
- args allows consumer of clap to decide if empty values are allowed or not (ab4ec609, closes #122)
- subcommands
- macros
- usage removes unneeded allocations (fd53cd18)
- color reduces color in error messages (aab44cca, closes #110)
- suggestions adds suggested arguments to usage strings (99447414)
- did-you-mean for review (0535cfb0)
- Positional positionals were ignored if they matched a subcmd, even after '--' (90e7b081)
- help fixes bug where space between arg and help is too long (632fb115)
- from_usage adds ability to add value names or num of vals in usage string (3d581976, closes #98)
- did-you-mean
- Flags adds suggestions functionality (8745071c)
- errors colorizes output red on error (f8b26b13)
- arg_enum allows ascii case insensitivity for enum variants (b249f965, closes #104)
- clap-test simplified
make test
invocation (d17dcb29)
- README adds details about optional and new features (960389de)
- clap fix typos caught by codespell (8891d929)
- from_usage explains new usage strings with multiple values (05476fc6)
- Options adds number of values to options in help/usage (c1c993c4)
- MultipleValues properly distinguishes between multiple values and multiple occurrences (dd2a7564, closes #99)
- help fixes tab alignment with multiple values (847001ff)
- from_usage explains new usage strings with multiple values (5a3a42df)
- Options fixes bug where options with no value don't error out (a1fb94be)
- Options fixes a bug where option arguments in succession get their values skipped (f66334d0)
- RequiredValues fixes a bug where missing values are parsed as missing arguments (93c4a723)
- ErrorMessages improves error messages and corrections (a29c3983)
- ArgGroups improves requirement and confliction support for groups (c236dc5f)
- RequiredArgs fixes bug where required-by-default arguments are not listed in usage (12aea961, closes #96)
- MultipleValues stops evaluating values if the max or exact number of values was reached (86d92c9f)
- MultipleValues
- arg allow other types besides Vec for multiple value settings (BREAKING CHANGE 0cc2f698, closes #87)
- usage implement smart usage strings on errors (d77048ef, closes #88)
- help change long help --long=long -> --long (1e25abfc)
- RequiredArgs required by default args should no longer be required when their exclusions are present (4bb4c3cc)
- ArgGroups add ability to create arg groups (09eb4d98)
- from_usage fix bug causing args to not be required (b76129e9)
- apps add ability to display additional help info after auto-gen'ed help msg (65cc259e)
- from_usage tabs and spaces should be treated equally (4fd44181)
- macros.rs add macro to get version from Cargo.toml (c630969a)
- macros.rs fix use statements for trait impls (86e4075e)
- macros add ability to create enums pub or priv with derives (2c499f80)
- macros add macro to create custom enums to use as types (fb672aff)
- macros
- from_usage trim all whitespace before parsing (91d29045)
- tests fix failing doc tests (3710cd69)
- app add support for building args from usage strings (d5d48bcf)
- args add ability to create basic arguments from a usage string (ab409a8f)
- usage add ability to get usage string for subcommands too (3636afc4)
- SubCommands add method to get name and subcommand matches together (64e53928)
- ArgMatches add method to get default usage string (02462150)
- help sort arguments by name so as to not display a random order (f4b2bf57)
- flags fix bug not allowing users to specify -v or -h (90e72cff)
- help fix spacing when option argument has not long version (ca17fa49)
- positional args all previous positional args become required when a latter one is required (c14c3f31, closes #50)
- clap remove unstable features for Rust 1.0 (9abdb438)
- args improve error messages for arguments with mutual exclusions (18dbcf37, closes #51)
- option args fix bug in getting the wrong number of occurrences for options (82ad6ad7)
- help fix formatting for option arguments with no long (e8691004)
- flags add assertion to catch flags with specific value sets (a0a2a40f, closes #52)
- args improve error messages for arguments with mutual exclusions (bff945fc, closes #51)
- tests add missing .takes_value(true) to option2 (bdb0e88f)
- positional args all previous positional args become required when a latter one is required (343d47dc, closes #50)
- args fix bug in arguments who are required and mutually exclusive (6ceb88a5)
- help fix formatting of help and usage (28691b52)
- help fix formatting of help for flags and options (6ec10115)
- help add '...' to indicate multiple values supported (297ddba7)
- positionals
- apps allow use of hyphens in application and subcommand names (da549dcb)
- args determine if the only arguments allowed are also required (0a09eb36)
- args add support for a specific set of allowed values on options or positional arguments (270eb889)
- usage display required args in usage, even if only required by others (1b7316d4)
- subcommands properly list subcommands in help and usage (4ee02344)
- tests remove cargo test from claptests makefile (1cf73817)
- option fix bug with option occurrence values (9af52e93)
- tests fix testing script bug and formatting (d8f03a55)
- arg allow lifetimes other than 'static in arguments (9e8c1fb9)