clap-rs v3.0.0-beta.4 Release Notes

Release Date: 2021-08-14 // over 2 years ago
  • Minimum Required Rust

    • ๐Ÿš€ As of this release, clap requires rustc 1.54.0 or greater.

    ๐Ÿ’ฅ BREAKING CHANGES

    โž• Added unicode_help, env features.

    • Gated behind env:

      • Arg
      • Arg::env
      • Arg::env_os
      • Arg::hide_env_values
      • ArgSettings
      • ArgSettings::HideEnvValues
    • โœ‚ Removed Methods

      • Arg
      • Arg::settings in favor of Arg::setting(Setting1 | Setting2)
      • Arg::multiple in favour of Arg::multiple_values and Arg::multiple_occurrences
    • ๐Ÿ“‡ Renamed Settings

      • AppSettings::DisableHelpFlags => AppSettings::DisableHelpFlag
      • AppSettings::DisableVersion => AppSettings::DisableVersionFlag
      • AppSettings::VersionlessSubcommands => AppSettings::DisableVersionForSubcommands
    • ๐Ÿ“‡ Renamed Variants

      • ErrorKind
      • ErrorKind::MissingArgumentOrSubcommand => ErrorKind::DisplayHelpOnMissingArgumentOrSubcommand
    • ๐Ÿ”„ Changed

      • AppSettings::StrictUtf8 is now default and it and AppSettings::AllowInvalidUtf8 are replaced by
      • AppSettings::AllowInvalidUtf8ForExternalSubcommands
        • This only applies to the subcommand args. Before we paniced if the subcommand itself was invalid but now we will report an error up to the user.
      • ArgSettings::AllowInvalidUtf8
      • Allowing empty values is the default again with ArgSettings::AllowEmptyValues changing to ArgSettings::ForbidEmptyValues
      • AppSettings::GlobalVersion renamed to AppSettings::PropagateVersion and it is not applied globally anymore
      • Arg::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 and Arg::multiple_values does not set ArgSettings::TakesValue anymore
      • Arg::require_delimiter does not set ArgSettings::TakesValue and ArgSettings::UseValueDelimiter anymore
      • Arg::require_equals does not disallow empty values anymore
      • Arg::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 option
      • Arg::index, Arg::number_of_values, Arg::min_values, Arg::max_values now takes usize
      • Arg::value_delimiter now accepts char 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 returns Result<PathBuf, io::Error>
      • @group in clap_app! now needs : instead of =>
      • app and arg objects in yaml now allow unknown keys if _has_metadata is set

    ๐Ÿ”‹ Features

    • โž• Added
      • clap_generate::Shell
    • โž• 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
    • โž• Added Settings
      • AppSettings::UseLongFormatForHelpSubcommand
      • AppSettings::IgnoreErrors
      • AppSettings::InferLongArgs
      • ArgSettings::HideEnv

    โœจ Enhancements

    • ๐Ÿ‘ Better completion scripts
    • ๐ŸŽ Multiple bug fixes, performance improvements and error message improvements