mirror of
https://github.com/clap-rs/clap
synced 2024-12-05 02:29:12 +00:00
fix!: Remove App alias for Command
This commit is contained in:
parent
b94d5fcec0
commit
6e1e0f9fa2
9 changed files with 88 additions and 99 deletions
|
@ -1,4 +1,4 @@
|
||||||
See the documentation for [`Command::multicall`][crate::App::multicall] for rationale.
|
See the documentation for [`Command::multicall`][crate::Command::multicall] for rationale.
|
||||||
|
|
||||||
This example omits every command except true and false,
|
This example omits every command except true and false,
|
||||||
which are the most trivial to implement,
|
which are the most trivial to implement,
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
See the documentation for [`Command::multicall`][crate::App::multicall] for rationale.
|
See the documentation for [`Command::multicall`][crate::Command::multicall] for rationale.
|
||||||
|
|
||||||
This example omits the implementation of displaying address config
|
This example omits the implementation of displaying address config
|
||||||
|
|
||||||
|
|
|
@ -199,7 +199,7 @@
|
||||||
//!
|
//!
|
||||||
//! clap reports most development errors as `debug_assert!`s. Rather than checking every
|
//! clap reports most development errors as `debug_assert!`s. Rather than checking every
|
||||||
//! subcommand, you should have a test that calls
|
//! subcommand, you should have a test that calls
|
||||||
//! [`Command::debug_assert`][crate::App::debug_assert]:
|
//! [`Command::debug_assert`][crate::Command::debug_assert]:
|
||||||
//! ```rust,no_run
|
//! ```rust,no_run
|
||||||
#![doc = include_str!("../../examples/tutorial_derive/05_01_assert.rs")]
|
#![doc = include_str!("../../examples/tutorial_derive/05_01_assert.rs")]
|
||||||
//! ```
|
//! ```
|
||||||
|
|
|
@ -137,25 +137,25 @@
|
||||||
//! - e.g. `#[clap(arg_required_else_help(true))]` would translate to `cmd.arg_required_else_help(true)`
|
//! - e.g. `#[clap(arg_required_else_help(true))]` would translate to `cmd.arg_required_else_help(true)`
|
||||||
//!
|
//!
|
||||||
//! **Magic attributes:**
|
//! **Magic attributes:**
|
||||||
//! - `name = <expr>`: [`Command::name`][crate::App::name]
|
//! - `name = <expr>`: [`Command::name`][crate::Command::name]
|
||||||
//! - When not present: [crate `name`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-name-field) (if on [`Parser`][crate::Parser] container), variant name (if on [`Subcommand`][crate::Subcommand] variant)
|
//! - When not present: [crate `name`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-name-field) (if on [`Parser`][crate::Parser] container), variant name (if on [`Subcommand`][crate::Subcommand] variant)
|
||||||
//! - `version [= <expr>]`: [`Command::version`][crate::App::version]
|
//! - `version [= <expr>]`: [`Command::version`][crate::Command::version]
|
||||||
//! - When not present: no version set
|
//! - When not present: no version set
|
||||||
//! - Without `<expr>`: defaults to [crate `version`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-version-field)
|
//! - Without `<expr>`: defaults to [crate `version`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-version-field)
|
||||||
//! - `author [= <expr>]`: [`Command::author`][crate::App::author]
|
//! - `author [= <expr>]`: [`Command::author`][crate::Command::author]
|
||||||
//! - When not present: no author set
|
//! - When not present: no author set
|
||||||
//! - Without `<expr>`: defaults to [crate `authors`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-authors-field)
|
//! - Without `<expr>`: defaults to [crate `authors`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-authors-field)
|
||||||
//! - `about [= <expr>]`: [`Command::about`][crate::App::about]
|
//! - `about [= <expr>]`: [`Command::about`][crate::Command::about]
|
||||||
//! - When not present: [Doc comment summary](#doc-comments)
|
//! - When not present: [Doc comment summary](#doc-comments)
|
||||||
//! - Without `<expr>`: [crate `description`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-description-field) ([`Parser`][crate::Parser] container)
|
//! - Without `<expr>`: [crate `description`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-description-field) ([`Parser`][crate::Parser] container)
|
||||||
//! - **TIP:** When a doc comment is also present, you most likely want to add
|
//! - **TIP:** When a doc comment is also present, you most likely want to add
|
||||||
//! `#[clap(long_about = None)]` to clear the doc comment so only [`about`][crate::App::about]
|
//! `#[clap(long_about = None)]` to clear the doc comment so only [`about`][crate::Command::about]
|
||||||
//! gets shown with both `-h` and `--help`.
|
//! gets shown with both `-h` and `--help`.
|
||||||
//! - `long_about = <expr>`: [`Command::long_about`][crate::App::long_about]
|
//! - `long_about = <expr>`: [`Command::long_about`][crate::Command::long_about]
|
||||||
//! - When not present: [Doc comment](#doc-comments) if there is a blank line, else nothing
|
//! - When not present: [Doc comment](#doc-comments) if there is a blank line, else nothing
|
||||||
//! - `verbatim_doc_comment`: Minimizes pre-processing when converting doc comments to [`about`][crate::App::about] / [`long_about`][crate::App::long_about]
|
//! - `verbatim_doc_comment`: Minimizes pre-processing when converting doc comments to [`about`][crate::Command::about] / [`long_about`][crate::Command::long_about]
|
||||||
//! - `next_display_order`: [`Command::next_display_order`][crate::App::next_display_order]
|
//! - `next_display_order`: [`Command::next_display_order`][crate::Command::next_display_order]
|
||||||
//! - `next_help_heading`: [`Command::next_help_heading`][crate::App::next_help_heading]
|
//! - `next_help_heading`: [`Command::next_help_heading`][crate::Command::next_help_heading]
|
||||||
//! - When `flatten`ing [`Args`][crate::Args], this is scoped to just the args in this struct and any struct `flatten`ed into it
|
//! - When `flatten`ing [`Args`][crate::Args], this is scoped to just the args in this struct and any struct `flatten`ed into it
|
||||||
//! - `rename_all = <string_literal>`: Override default field / variant name case conversion for [`Command::name`][crate::Command::name] / [`Arg::id`][crate::Arg::id]
|
//! - `rename_all = <string_literal>`: Override default field / variant name case conversion for [`Command::name`][crate::Command::name] / [`Arg::id`][crate::Arg::id]
|
||||||
//! - When not present: `"kebab-case"`
|
//! - When not present: `"kebab-case"`
|
||||||
|
@ -170,7 +170,7 @@
|
||||||
//! [`Subcommand`][crate::Subcommand])
|
//! [`Subcommand`][crate::Subcommand])
|
||||||
//! - `subcommand`: Nest subcommands under the current set of subcommands (must implement
|
//! - `subcommand`: Nest subcommands under the current set of subcommands (must implement
|
||||||
//! [`Subcommand`][crate::Subcommand])
|
//! [`Subcommand`][crate::Subcommand])
|
||||||
//! - `external_subcommand`: [`Command::allow_external_subcommand(true)`][crate::App::allow_external_subcommands]
|
//! - `external_subcommand`: [`Command::allow_external_subcommand(true)`][crate::Command::allow_external_subcommands]
|
||||||
//! - Variant must be either `Variant(Vec<String>)` or `Variant(Vec<OsString>)`
|
//! - Variant must be either `Variant(Vec<String>)` or `Variant(Vec<OsString>)`
|
||||||
//!
|
//!
|
||||||
//! ### Arg Attributes
|
//! ### Arg Attributes
|
||||||
|
@ -305,7 +305,7 @@
|
||||||
//! ## Doc Comments
|
//! ## Doc Comments
|
||||||
//!
|
//!
|
||||||
//! In clap, help messages for the whole binary can be specified
|
//! In clap, help messages for the whole binary can be specified
|
||||||
//! via [`Command::about`][crate::App::about] and [`Command::long_about`][crate::App::long_about] while help messages
|
//! via [`Command::about`][crate::Command::about] and [`Command::long_about`][crate::Command::long_about] while help messages
|
||||||
//! for individual arguments can be specified via [`Arg::help`][crate::Arg::help] and [`Arg::long_help`][crate::Arg::long_help].
|
//! for individual arguments can be specified via [`Arg::help`][crate::Arg::help] and [`Arg::long_help`][crate::Arg::long_help].
|
||||||
//!
|
//!
|
||||||
//! `long_*` variants are used when user calls the program with
|
//! `long_*` variants are used when user calls the program with
|
||||||
|
@ -488,7 +488,7 @@
|
||||||
//! [`CommandFactory::command`][crate::CommandFactory::command] (implemented when deriving
|
//! [`CommandFactory::command`][crate::CommandFactory::command] (implemented when deriving
|
||||||
//! [`Parser`][crate::Parser])
|
//! [`Parser`][crate::Parser])
|
||||||
//! - Proactively check for bad [`Command`][crate::Command] configurations by calling
|
//! - Proactively check for bad [`Command`][crate::Command] configurations by calling
|
||||||
//! [`Command::debug_assert`][crate::App::debug_assert] in a test
|
//! [`Command::debug_assert`][crate::Command::debug_assert] in a test
|
||||||
//! ([example](../tutorial_derive/05_01_assert.rs))
|
//! ([example](../tutorial_derive/05_01_assert.rs))
|
||||||
|
|
||||||
pub mod _tutorial;
|
pub mod _tutorial;
|
||||||
|
|
|
@ -198,7 +198,7 @@
|
||||||
//!
|
//!
|
||||||
//! clap reports most development errors as `debug_assert!`s. Rather than checking every
|
//! clap reports most development errors as `debug_assert!`s. Rather than checking every
|
||||||
//! subcommand, you should have a test that calls
|
//! subcommand, you should have a test that calls
|
||||||
//! [`Command::debug_assert`][crate::App::debug_assert]:
|
//! [`Command::debug_assert`][crate::Command::debug_assert]:
|
||||||
//! ```rust,no_run
|
//! ```rust,no_run
|
||||||
#![doc = include_str!("../examples/tutorial_builder/05_01_assert.rs")]
|
#![doc = include_str!("../examples/tutorial_builder/05_01_assert.rs")]
|
||||||
//! ```
|
//! ```
|
||||||
|
|
|
@ -196,9 +196,9 @@ pub enum ArgAction {
|
||||||
/// );
|
/// );
|
||||||
/// ```
|
/// ```
|
||||||
Count,
|
Count,
|
||||||
/// When encountered, display [`Command::print_help`][super::App::print_help]
|
/// When encountered, display [`Command::print_help`][super::Command::print_help]
|
||||||
///
|
///
|
||||||
/// Depending on the flag, [`Command::print_long_help`][super::App::print_long_help] may be shown
|
/// Depending on the flag, [`Command::print_long_help`][super::Command::print_long_help] may be shown
|
||||||
///
|
///
|
||||||
/// # Examples
|
/// # Examples
|
||||||
///
|
///
|
||||||
|
@ -221,9 +221,9 @@ pub enum ArgAction {
|
||||||
/// assert_eq!(err.kind(), clap::error::ErrorKind::DisplayHelp);
|
/// assert_eq!(err.kind(), clap::error::ErrorKind::DisplayHelp);
|
||||||
/// ```
|
/// ```
|
||||||
Help,
|
Help,
|
||||||
/// When encountered, display [`Command::version`][super::App::version]
|
/// When encountered, display [`Command::version`][super::Command::version]
|
||||||
///
|
///
|
||||||
/// Depending on the flag, [`Command::long_version`][super::App::long_version] may be shown
|
/// Depending on the flag, [`Command::long_version`][super::Command::long_version] may be shown
|
||||||
///
|
///
|
||||||
/// # Examples
|
/// # Examples
|
||||||
///
|
///
|
||||||
|
|
|
@ -39,11 +39,11 @@ use crate::builder::debug_asserts::assert_app;
|
||||||
/// [`CommandFactory::command`][crate::CommandFactory::command] to access the
|
/// [`CommandFactory::command`][crate::CommandFactory::command] to access the
|
||||||
/// `Command`.
|
/// `Command`.
|
||||||
///
|
///
|
||||||
/// - [Basic API][crate::App#basic-api]
|
/// - [Basic API][crate::Command#basic-api]
|
||||||
/// - [Application-wide Settings][crate::App#application-wide-settings]
|
/// - [Application-wide Settings][crate::Command#application-wide-settings]
|
||||||
/// - [Command-specific Settings][crate::App#command-specific-settings]
|
/// - [Command-specific Settings][crate::Command#command-specific-settings]
|
||||||
/// - [Subcommand-specific Settings][crate::App#subcommand-specific-settings]
|
/// - [Subcommand-specific Settings][crate::Command#subcommand-specific-settings]
|
||||||
/// - [Reflection][crate::App#reflection]
|
/// - [Reflection][crate::Command#reflection]
|
||||||
///
|
///
|
||||||
/// # Examples
|
/// # Examples
|
||||||
///
|
///
|
||||||
|
@ -62,16 +62,9 @@ use crate::builder::debug_asserts::assert_app;
|
||||||
///
|
///
|
||||||
/// // Your program logic starts here...
|
/// // Your program logic starts here...
|
||||||
/// ```
|
/// ```
|
||||||
/// [`App::get_matches`]: Command::get_matches()
|
/// [`Command::get_matches`]: Command::get_matches()
|
||||||
pub type Command<'help> = App<'help>;
|
|
||||||
|
|
||||||
/// Deprecated, replaced with [`Command`]
|
|
||||||
#[cfg_attr(
|
|
||||||
feature = "deprecated",
|
|
||||||
deprecated(since = "3.1.0", note = "Replaced with `Command`")
|
|
||||||
)]
|
|
||||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||||
pub struct App<'help> {
|
pub struct Command<'help> {
|
||||||
id: Id,
|
id: Id,
|
||||||
name: String,
|
name: String,
|
||||||
long_flag: Option<&'help str>,
|
long_flag: Option<&'help str>,
|
||||||
|
@ -100,7 +93,7 @@ pub struct App<'help> {
|
||||||
settings: AppFlags,
|
settings: AppFlags,
|
||||||
g_settings: AppFlags,
|
g_settings: AppFlags,
|
||||||
args: MKeyMap<'help>,
|
args: MKeyMap<'help>,
|
||||||
subcommands: Vec<App<'help>>,
|
subcommands: Vec<Command<'help>>,
|
||||||
replacers: HashMap<&'help str, &'help [&'help str]>,
|
replacers: HashMap<&'help str, &'help [&'help str]>,
|
||||||
groups: Vec<ArgGroup<'help>>,
|
groups: Vec<ArgGroup<'help>>,
|
||||||
current_help_heading: Option<&'help str>,
|
current_help_heading: Option<&'help str>,
|
||||||
|
@ -110,7 +103,7 @@ pub struct App<'help> {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// # Basic API
|
/// # Basic API
|
||||||
impl<'help> App<'help> {
|
impl<'help> Command<'help> {
|
||||||
/// Creates a new instance of an `Command`.
|
/// Creates a new instance of an `Command`.
|
||||||
///
|
///
|
||||||
/// It is common, but not required, to use binary name as the `name`. This
|
/// It is common, but not required, to use binary name as the `name`. This
|
||||||
|
@ -131,8 +124,8 @@ impl<'help> App<'help> {
|
||||||
///
|
///
|
||||||
/// If we don't do this rustc will unnecessarily generate multiple versions
|
/// If we don't do this rustc will unnecessarily generate multiple versions
|
||||||
/// of this code.
|
/// of this code.
|
||||||
fn new_inner<'help>(name: String) -> App<'help> {
|
fn new_inner<'help>(name: String) -> Command<'help> {
|
||||||
App {
|
Command {
|
||||||
id: Id::from(&*name),
|
id: Id::from(&*name),
|
||||||
name,
|
name,
|
||||||
..Default::default()
|
..Default::default()
|
||||||
|
@ -296,7 +289,7 @@ impl<'help> App<'help> {
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn mut_subcommand<'a, T, F>(mut self, subcmd_id: T, f: F) -> Self
|
pub fn mut_subcommand<'a, T, F>(mut self, subcmd_id: T, f: F) -> Self
|
||||||
where
|
where
|
||||||
F: FnOnce(App<'help>) -> App<'help>,
|
F: FnOnce(Self) -> Self,
|
||||||
T: Into<&'a str>,
|
T: Into<&'a str>,
|
||||||
{
|
{
|
||||||
let subcmd_id: &str = subcmd_id.into();
|
let subcmd_id: &str = subcmd_id.into();
|
||||||
|
@ -307,7 +300,7 @@ impl<'help> App<'help> {
|
||||||
let subcmd = if let Some(idx) = pos {
|
let subcmd = if let Some(idx) = pos {
|
||||||
self.subcommands.remove(idx)
|
self.subcommands.remove(idx)
|
||||||
} else {
|
} else {
|
||||||
App::new(subcmd_id)
|
Self::new(subcmd_id)
|
||||||
};
|
};
|
||||||
|
|
||||||
self.subcommands.push(f(subcmd));
|
self.subcommands.push(f(subcmd));
|
||||||
|
@ -408,7 +401,7 @@ impl<'help> App<'help> {
|
||||||
/// ```
|
/// ```
|
||||||
#[inline]
|
#[inline]
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn subcommand<S: Into<App<'help>>>(mut self, subcmd: S) -> Self {
|
pub fn subcommand<S: Into<Self>>(mut self, subcmd: S) -> Self {
|
||||||
self.subcommands.push(subcmd.into());
|
self.subcommands.push(subcmd.into());
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
@ -431,7 +424,7 @@ impl<'help> App<'help> {
|
||||||
pub fn subcommands<I, T>(mut self, subcmds: I) -> Self
|
pub fn subcommands<I, T>(mut self, subcmds: I) -> Self
|
||||||
where
|
where
|
||||||
I: IntoIterator<Item = T>,
|
I: IntoIterator<Item = T>,
|
||||||
T: Into<App<'help>>,
|
T: Into<Self>,
|
||||||
{
|
{
|
||||||
for subcmd in subcmds.into_iter() {
|
for subcmd in subcmds.into_iter() {
|
||||||
self.subcommands.push(subcmd.into());
|
self.subcommands.push(subcmd.into());
|
||||||
|
@ -502,7 +495,7 @@ impl<'help> App<'help> {
|
||||||
/// .get_matches();
|
/// .get_matches();
|
||||||
/// ```
|
/// ```
|
||||||
/// [`env::args_os`]: std::env::args_os()
|
/// [`env::args_os`]: std::env::args_os()
|
||||||
/// [`App::try_get_matches_from_mut`]: Command::try_get_matches_from_mut()
|
/// [`Command::try_get_matches_from_mut`]: Command::try_get_matches_from_mut()
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn get_matches(self) -> ArgMatches {
|
pub fn get_matches(self) -> ArgMatches {
|
||||||
self.get_matches_from(&mut env::args_os())
|
self.get_matches_from(&mut env::args_os())
|
||||||
|
@ -510,7 +503,7 @@ impl<'help> App<'help> {
|
||||||
|
|
||||||
/// Parse [`env::args_os`], exiting on failure.
|
/// Parse [`env::args_os`], exiting on failure.
|
||||||
///
|
///
|
||||||
/// Like [`App::get_matches`] but doesn't consume the `Command`.
|
/// Like [`Command::get_matches`] but doesn't consume the `Command`.
|
||||||
///
|
///
|
||||||
/// # Panics
|
/// # Panics
|
||||||
///
|
///
|
||||||
|
@ -526,7 +519,7 @@ impl<'help> App<'help> {
|
||||||
/// let matches = cmd.get_matches_mut();
|
/// let matches = cmd.get_matches_mut();
|
||||||
/// ```
|
/// ```
|
||||||
/// [`env::args_os`]: std::env::args_os()
|
/// [`env::args_os`]: std::env::args_os()
|
||||||
/// [`App::get_matches`]: Command::get_matches()
|
/// [`Command::get_matches`]: Command::get_matches()
|
||||||
pub fn get_matches_mut(&mut self) -> ArgMatches {
|
pub fn get_matches_mut(&mut self) -> ArgMatches {
|
||||||
self.try_get_matches_from_mut(&mut env::args_os())
|
self.try_get_matches_from_mut(&mut env::args_os())
|
||||||
.unwrap_or_else(|e| e.exit())
|
.unwrap_or_else(|e| e.exit())
|
||||||
|
@ -585,7 +578,7 @@ impl<'help> App<'help> {
|
||||||
/// // Args and options go here...
|
/// // Args and options go here...
|
||||||
/// .get_matches_from(arg_vec);
|
/// .get_matches_from(arg_vec);
|
||||||
/// ```
|
/// ```
|
||||||
/// [`App::get_matches`]: Command::get_matches()
|
/// [`Command::get_matches`]: Command::get_matches()
|
||||||
/// [`clap::Result`]: Result
|
/// [`clap::Result`]: Result
|
||||||
/// [`Vec`]: std::vec::Vec
|
/// [`Vec`]: std::vec::Vec
|
||||||
pub fn get_matches_from<I, T>(mut self, itr: I) -> ArgMatches
|
pub fn get_matches_from<I, T>(mut self, itr: I) -> ArgMatches
|
||||||
|
@ -624,8 +617,8 @@ impl<'help> App<'help> {
|
||||||
/// .try_get_matches_from(arg_vec)
|
/// .try_get_matches_from(arg_vec)
|
||||||
/// .unwrap_or_else(|e| e.exit());
|
/// .unwrap_or_else(|e| e.exit());
|
||||||
/// ```
|
/// ```
|
||||||
/// [`App::get_matches_from`]: Command::get_matches_from()
|
/// [`Command::get_matches_from`]: Command::get_matches_from()
|
||||||
/// [`App::try_get_matches`]: Command::try_get_matches()
|
/// [`Command::try_get_matches`]: Command::try_get_matches()
|
||||||
/// [`Error::exit`]: crate::Error::exit()
|
/// [`Error::exit`]: crate::Error::exit()
|
||||||
/// [`std::process::exit`]: std::process::exit()
|
/// [`std::process::exit`]: std::process::exit()
|
||||||
/// [`clap::Error`]: crate::Error
|
/// [`clap::Error`]: crate::Error
|
||||||
|
@ -644,7 +637,7 @@ impl<'help> App<'help> {
|
||||||
|
|
||||||
/// Parse the specified arguments, returning a [`clap::Result`] on failure.
|
/// Parse the specified arguments, returning a [`clap::Result`] on failure.
|
||||||
///
|
///
|
||||||
/// Like [`App::try_get_matches_from`] but doesn't consume the `Command`.
|
/// Like [`Command::try_get_matches_from`] but doesn't consume the `Command`.
|
||||||
///
|
///
|
||||||
/// **NOTE:** This method WILL NOT exit when `--help` or `--version` (or short versions) are
|
/// **NOTE:** This method WILL NOT exit when `--help` or `--version` (or short versions) are
|
||||||
/// used. It will return a [`clap::Error`], where the [`kind`] is a [`ErrorKind::DisplayHelp`]
|
/// used. It will return a [`clap::Error`], where the [`kind`] is a [`ErrorKind::DisplayHelp`]
|
||||||
|
@ -669,7 +662,7 @@ impl<'help> App<'help> {
|
||||||
/// let matches = cmd.try_get_matches_from_mut(arg_vec)
|
/// let matches = cmd.try_get_matches_from_mut(arg_vec)
|
||||||
/// .unwrap_or_else(|e| e.exit());
|
/// .unwrap_or_else(|e| e.exit());
|
||||||
/// ```
|
/// ```
|
||||||
/// [`App::try_get_matches_from`]: Command::try_get_matches_from()
|
/// [`Command::try_get_matches_from`]: Command::try_get_matches_from()
|
||||||
/// [`clap::Result`]: Result
|
/// [`clap::Result`]: Result
|
||||||
/// [`clap::Error`]: crate::Error
|
/// [`clap::Error`]: crate::Error
|
||||||
/// [`kind`]: crate::Error
|
/// [`kind`]: crate::Error
|
||||||
|
@ -892,11 +885,11 @@ impl<'help> App<'help> {
|
||||||
///
|
///
|
||||||
/// These settings will apply to the top-level command and all subcommands, by default. Some
|
/// These settings will apply to the top-level command and all subcommands, by default. Some
|
||||||
/// settings can be overridden in subcommands.
|
/// settings can be overridden in subcommands.
|
||||||
impl<'help> App<'help> {
|
impl<'help> Command<'help> {
|
||||||
/// Specifies that the parser should not assume the first argument passed is the binary name.
|
/// Specifies that the parser should not assume the first argument passed is the binary name.
|
||||||
///
|
///
|
||||||
/// This is normally the case when using a "daemon" style mode. For shells / REPLs, see
|
/// This is normally the case when using a "daemon" style mode. For shells / REPLs, see
|
||||||
/// [`Command::multicall`][App::multicall].
|
/// [`Command::multicall`][Command::multicall].
|
||||||
///
|
///
|
||||||
/// # Examples
|
/// # Examples
|
||||||
///
|
///
|
||||||
|
@ -1371,7 +1364,7 @@ impl<'help> App<'help> {
|
||||||
/// # Command-specific Settings
|
/// # Command-specific Settings
|
||||||
///
|
///
|
||||||
/// These apply only to the current command and are not inherited by subcommands.
|
/// These apply only to the current command and are not inherited by subcommands.
|
||||||
impl<'help> App<'help> {
|
impl<'help> Command<'help> {
|
||||||
/// (Re)Sets the program's name.
|
/// (Re)Sets the program's name.
|
||||||
///
|
///
|
||||||
/// See [`Command::new`] for more details.
|
/// See [`Command::new`] for more details.
|
||||||
|
@ -1494,7 +1487,7 @@ impl<'help> App<'help> {
|
||||||
/// a few lines of text, but that's ok!")
|
/// a few lines of text, but that's ok!")
|
||||||
/// # ;
|
/// # ;
|
||||||
/// ```
|
/// ```
|
||||||
/// [`App::about`]: Command::about()
|
/// [`Command::about`]: Command::about()
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn long_about<O: Into<Option<&'help str>>>(mut self, long_about: O) -> Self {
|
pub fn long_about<O: Into<Option<&'help str>>>(mut self, long_about: O) -> Self {
|
||||||
self.long_about = long_about.into();
|
self.long_about = long_about.into();
|
||||||
|
@ -1720,8 +1713,8 @@ impl<'help> App<'help> {
|
||||||
/// * `{options}` - Help for options.
|
/// * `{options}` - Help for options.
|
||||||
/// * `{positionals}` - Help for positional arguments.
|
/// * `{positionals}` - Help for positional arguments.
|
||||||
/// * `{subcommands}` - Help for subcommands.
|
/// * `{subcommands}` - Help for subcommands.
|
||||||
/// * `{after-help}` - Help from [`App::after_help`] or [`Command::after_long_help`].
|
/// * `{after-help}` - Help from [`Command::after_help`] or [`Command::after_long_help`].
|
||||||
/// * `{before-help}` - Help from [`App::before_help`] or [`Command::before_long_help`].
|
/// * `{before-help}` - Help from [`Command::before_help`] or [`Command::before_long_help`].
|
||||||
///
|
///
|
||||||
/// # Examples
|
/// # Examples
|
||||||
///
|
///
|
||||||
|
@ -1732,12 +1725,12 @@ impl<'help> App<'help> {
|
||||||
/// .help_template("{bin} ({version}) - {usage}")
|
/// .help_template("{bin} ({version}) - {usage}")
|
||||||
/// # ;
|
/// # ;
|
||||||
/// ```
|
/// ```
|
||||||
/// [`App::about`]: Command::about()
|
/// [`Command::about`]: Command::about()
|
||||||
/// [`App::long_about`]: Command::long_about()
|
/// [`Command::long_about`]: Command::long_about()
|
||||||
/// [`App::after_help`]: Command::after_help()
|
/// [`Command::after_help`]: Command::after_help()
|
||||||
/// [`App::after_long_help`]: Command::after_long_help()
|
/// [`Command::after_long_help`]: Command::after_long_help()
|
||||||
/// [`App::before_help`]: Command::before_help()
|
/// [`Command::before_help`]: Command::before_help()
|
||||||
/// [`App::before_long_help`]: Command::before_long_help()
|
/// [`Command::before_long_help`]: Command::before_long_help()
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn help_template<S: Into<&'help str>>(mut self, s: S) -> Self {
|
pub fn help_template<S: Into<&'help str>>(mut self, s: S) -> Self {
|
||||||
self.template = Some(s.into());
|
self.template = Some(s.into());
|
||||||
|
@ -1858,7 +1851,7 @@ impl<'help> App<'help> {
|
||||||
///
|
///
|
||||||
/// For subcommands, see [`Command::subcommand_help_heading`]
|
/// For subcommands, see [`Command::subcommand_help_heading`]
|
||||||
///
|
///
|
||||||
/// [`App::arg`]: Command::arg()
|
/// [`Command::arg`]: Command::arg()
|
||||||
/// [`Arg::help_heading`]: crate::Arg::help_heading()
|
/// [`Arg::help_heading`]: crate::Arg::help_heading()
|
||||||
#[inline]
|
#[inline]
|
||||||
#[must_use]
|
#[must_use]
|
||||||
|
@ -1986,7 +1979,7 @@ impl<'help> App<'help> {
|
||||||
/// assert_eq!(m.get_one::<String>("format").unwrap(), "json");
|
/// assert_eq!(m.get_one::<String>("format").unwrap(), "json");
|
||||||
/// ```
|
/// ```
|
||||||
///
|
///
|
||||||
/// [`App::replace`]: Command::replace()
|
/// [`Command::replace`]: Command::replace()
|
||||||
#[inline]
|
#[inline]
|
||||||
#[cfg(feature = "unstable-replace")]
|
#[cfg(feature = "unstable-replace")]
|
||||||
#[must_use]
|
#[must_use]
|
||||||
|
@ -2227,7 +2220,7 @@ impl<'help> App<'help> {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// # Subcommand-specific Settings
|
/// # Subcommand-specific Settings
|
||||||
impl<'help> App<'help> {
|
impl<'help> Command<'help> {
|
||||||
/// Sets the short version of the subcommand flag without the preceding `-`.
|
/// Sets the short version of the subcommand flag without the preceding `-`.
|
||||||
///
|
///
|
||||||
/// Allows the subcommand to be used as if it were an [`Arg::short`].
|
/// Allows the subcommand to be used as if it were an [`Arg::short`].
|
||||||
|
@ -2328,7 +2321,7 @@ impl<'help> App<'help> {
|
||||||
/// .get_matches_from(vec!["myprog", "do-stuff"]);
|
/// .get_matches_from(vec!["myprog", "do-stuff"]);
|
||||||
/// assert_eq!(m.subcommand_name(), Some("test"));
|
/// assert_eq!(m.subcommand_name(), Some("test"));
|
||||||
/// ```
|
/// ```
|
||||||
/// [`App::visible_alias`]: Command::visible_alias()
|
/// [`Command::visible_alias`]: Command::visible_alias()
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn alias<S: Into<&'help str>>(mut self, name: S) -> Self {
|
pub fn alias<S: Into<&'help str>>(mut self, name: S) -> Self {
|
||||||
self.aliases.push((name.into(), false));
|
self.aliases.push((name.into(), false));
|
||||||
|
@ -2407,7 +2400,7 @@ impl<'help> App<'help> {
|
||||||
/// .get_matches_from(vec!["myprog", "do-tests"]);
|
/// .get_matches_from(vec!["myprog", "do-tests"]);
|
||||||
/// assert_eq!(m.subcommand_name(), Some("test"));
|
/// assert_eq!(m.subcommand_name(), Some("test"));
|
||||||
/// ```
|
/// ```
|
||||||
/// [`App::visible_aliases`]: Command::visible_aliases()
|
/// [`Command::visible_aliases`]: Command::visible_aliases()
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn aliases(mut self, names: &[&'help str]) -> Self {
|
pub fn aliases(mut self, names: &[&'help str]) -> Self {
|
||||||
self.aliases.extend(names.iter().map(|n| (*n, false)));
|
self.aliases.extend(names.iter().map(|n| (*n, false)));
|
||||||
|
@ -2495,7 +2488,7 @@ impl<'help> App<'help> {
|
||||||
/// .get_matches_from(vec!["myprog", "do-stuff"]);
|
/// .get_matches_from(vec!["myprog", "do-stuff"]);
|
||||||
/// assert_eq!(m.subcommand_name(), Some("test"));
|
/// assert_eq!(m.subcommand_name(), Some("test"));
|
||||||
/// ```
|
/// ```
|
||||||
/// [`App::alias`]: Command::alias()
|
/// [`Command::alias`]: Command::alias()
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn visible_alias<S: Into<&'help str>>(mut self, name: S) -> Self {
|
pub fn visible_alias<S: Into<&'help str>>(mut self, name: S) -> Self {
|
||||||
self.aliases.push((name.into(), true));
|
self.aliases.push((name.into(), true));
|
||||||
|
@ -2520,7 +2513,7 @@ impl<'help> App<'help> {
|
||||||
/// .get_matches_from(vec!["myprog", "-d"]);
|
/// .get_matches_from(vec!["myprog", "-d"]);
|
||||||
/// assert_eq!(m.subcommand_name(), Some("test"));
|
/// assert_eq!(m.subcommand_name(), Some("test"));
|
||||||
/// ```
|
/// ```
|
||||||
/// [`App::short_flag_alias`]: Command::short_flag_alias()
|
/// [`Command::short_flag_alias`]: Command::short_flag_alias()
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn visible_short_flag_alias(mut self, name: char) -> Self {
|
pub fn visible_short_flag_alias(mut self, name: char) -> Self {
|
||||||
assert!(name != '-', "short alias name cannot be `-`");
|
assert!(name != '-', "short alias name cannot be `-`");
|
||||||
|
@ -2546,7 +2539,7 @@ impl<'help> App<'help> {
|
||||||
/// .get_matches_from(vec!["myprog", "--testing"]);
|
/// .get_matches_from(vec!["myprog", "--testing"]);
|
||||||
/// assert_eq!(m.subcommand_name(), Some("test"));
|
/// assert_eq!(m.subcommand_name(), Some("test"));
|
||||||
/// ```
|
/// ```
|
||||||
/// [`App::long_flag_alias`]: Command::long_flag_alias()
|
/// [`Command::long_flag_alias`]: Command::long_flag_alias()
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn visible_long_flag_alias(mut self, name: &'help str) -> Self {
|
pub fn visible_long_flag_alias(mut self, name: &'help str) -> Self {
|
||||||
self.long_flag_aliases.push((name, true));
|
self.long_flag_aliases.push((name, true));
|
||||||
|
@ -2579,7 +2572,7 @@ impl<'help> App<'help> {
|
||||||
/// .get_matches_from(vec!["myprog", "do-stuff"]);
|
/// .get_matches_from(vec!["myprog", "do-stuff"]);
|
||||||
/// assert_eq!(m.subcommand_name(), Some("test"));
|
/// assert_eq!(m.subcommand_name(), Some("test"));
|
||||||
/// ```
|
/// ```
|
||||||
/// [`App::alias`]: Command::alias()
|
/// [`Command::alias`]: Command::alias()
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn visible_aliases(mut self, names: &[&'help str]) -> Self {
|
pub fn visible_aliases(mut self, names: &[&'help str]) -> Self {
|
||||||
self.aliases.extend(names.iter().map(|n| (*n, true)));
|
self.aliases.extend(names.iter().map(|n| (*n, true)));
|
||||||
|
@ -2600,7 +2593,7 @@ impl<'help> App<'help> {
|
||||||
/// .get_matches_from(vec!["myprog", "-t"]);
|
/// .get_matches_from(vec!["myprog", "-t"]);
|
||||||
/// assert_eq!(m.subcommand_name(), Some("test"));
|
/// assert_eq!(m.subcommand_name(), Some("test"));
|
||||||
/// ```
|
/// ```
|
||||||
/// [`App::short_flag_aliases`]: Command::short_flag_aliases()
|
/// [`Command::short_flag_aliases`]: Command::short_flag_aliases()
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn visible_short_flag_aliases(mut self, names: &[char]) -> Self {
|
pub fn visible_short_flag_aliases(mut self, names: &[char]) -> Self {
|
||||||
for s in names {
|
for s in names {
|
||||||
|
@ -2624,7 +2617,7 @@ impl<'help> App<'help> {
|
||||||
/// .get_matches_from(vec!["myprog", "--testing"]);
|
/// .get_matches_from(vec!["myprog", "--testing"]);
|
||||||
/// assert_eq!(m.subcommand_name(), Some("test"));
|
/// assert_eq!(m.subcommand_name(), Some("test"));
|
||||||
/// ```
|
/// ```
|
||||||
/// [`App::long_flag_aliases`]: Command::long_flag_aliases()
|
/// [`Command::long_flag_aliases`]: Command::long_flag_aliases()
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn visible_long_flag_aliases(mut self, names: &[&'help str]) -> Self {
|
pub fn visible_long_flag_aliases(mut self, names: &[&'help str]) -> Self {
|
||||||
for s in names {
|
for s in names {
|
||||||
|
@ -2991,7 +2984,7 @@ impl<'help> App<'help> {
|
||||||
///
|
///
|
||||||
/// Setting `multicall` will cause
|
/// Setting `multicall` will cause
|
||||||
/// - `argv[0]` to be stripped to the base name and parsed as the first argument, as if
|
/// - `argv[0]` to be stripped to the base name and parsed as the first argument, as if
|
||||||
/// [`Command::no_binary_name`][App::no_binary_name] was set.
|
/// [`Command::no_binary_name`][Command::no_binary_name] was set.
|
||||||
/// - Help and errors to report subcommands as if they were the top-level command
|
/// - Help and errors to report subcommands as if they were the top-level command
|
||||||
///
|
///
|
||||||
/// When the subcommand is not present, there are several strategies you may employ, depending
|
/// When the subcommand is not present, there are several strategies you may employ, depending
|
||||||
|
@ -2999,13 +2992,13 @@ impl<'help> App<'help> {
|
||||||
/// - Let the error percolate up normally
|
/// - Let the error percolate up normally
|
||||||
/// - Print a specialized error message using the
|
/// - Print a specialized error message using the
|
||||||
/// [`Error::context`][crate::Error::context]
|
/// [`Error::context`][crate::Error::context]
|
||||||
/// - Print the [help][App::write_help] but this might be ambiguous
|
/// - Print the [help][Command::write_help] but this might be ambiguous
|
||||||
/// - Disable `multicall` and re-parse it
|
/// - Disable `multicall` and re-parse it
|
||||||
/// - Disable `multicall` and re-parse it with a specific subcommand
|
/// - Disable `multicall` and re-parse it with a specific subcommand
|
||||||
///
|
///
|
||||||
/// When detecting the error condition, the [`ErrorKind`] isn't sufficient as a sub-subcommand
|
/// When detecting the error condition, the [`ErrorKind`] isn't sufficient as a sub-subcommand
|
||||||
/// might report the same error. Enable
|
/// might report the same error. Enable
|
||||||
/// [`allow_external_subcommands`][App::allow_external_subcommands] if you want to specifically
|
/// [`allow_external_subcommands`][Command::allow_external_subcommands] if you want to specifically
|
||||||
/// get the unrecognized binary name.
|
/// get the unrecognized binary name.
|
||||||
///
|
///
|
||||||
/// **NOTE:** Multicall can't be used with [`no_binary_name`] since they interpret
|
/// **NOTE:** Multicall can't be used with [`no_binary_name`] since they interpret
|
||||||
|
@ -3088,8 +3081,8 @@ impl<'help> App<'help> {
|
||||||
/// ```
|
/// ```
|
||||||
///
|
///
|
||||||
/// [`no_binary_name`]: crate::Command::no_binary_name
|
/// [`no_binary_name`]: crate::Command::no_binary_name
|
||||||
/// [`App::subcommand_value_name`]: crate::Command::subcommand_value_name
|
/// [`Command::subcommand_value_name`]: crate::Command::subcommand_value_name
|
||||||
/// [`App::subcommand_help_heading`]: crate::Command::subcommand_help_heading
|
/// [`Command::subcommand_help_heading`]: crate::Command::subcommand_help_heading
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn multicall(self, yes: bool) -> Self {
|
pub fn multicall(self, yes: bool) -> Self {
|
||||||
if yes {
|
if yes {
|
||||||
|
@ -3239,7 +3232,7 @@ impl<'help> App<'help> {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// # Reflection
|
/// # Reflection
|
||||||
impl<'help> App<'help> {
|
impl<'help> Command<'help> {
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) fn get_usage_name(&self) -> Option<&str> {
|
pub(crate) fn get_usage_name(&self) -> Option<&str> {
|
||||||
self.usage_name.as_deref()
|
self.usage_name.as_deref()
|
||||||
|
@ -3300,7 +3293,7 @@ impl<'help> App<'help> {
|
||||||
|
|
||||||
/// Get the help message specified via [`Command::about`].
|
/// Get the help message specified via [`Command::about`].
|
||||||
///
|
///
|
||||||
/// [`App::about`]: Command::about()
|
/// [`Command::about`]: Command::about()
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn get_about(&self) -> Option<&'help str> {
|
pub fn get_about(&self) -> Option<&'help str> {
|
||||||
self.about
|
self.about
|
||||||
|
@ -3308,7 +3301,7 @@ impl<'help> App<'help> {
|
||||||
|
|
||||||
/// Get the help message specified via [`Command::long_about`].
|
/// Get the help message specified via [`Command::long_about`].
|
||||||
///
|
///
|
||||||
/// [`App::long_about`]: Command::long_about()
|
/// [`Command::long_about`]: Command::long_about()
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn get_long_about(&self) -> Option<&'help str> {
|
pub fn get_long_about(&self) -> Option<&'help str> {
|
||||||
self.long_about
|
self.long_about
|
||||||
|
@ -3316,7 +3309,7 @@ impl<'help> App<'help> {
|
||||||
|
|
||||||
/// Get the custom section heading specified via [`Command::next_help_heading`].
|
/// Get the custom section heading specified via [`Command::next_help_heading`].
|
||||||
///
|
///
|
||||||
/// [`App::help_heading`]: Command::help_heading()
|
/// [`Command::help_heading`]: Command::help_heading()
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn get_next_help_heading(&self) -> Option<&'help str> {
|
pub fn get_next_help_heading(&self) -> Option<&'help str> {
|
||||||
self.current_help_heading
|
self.current_help_heading
|
||||||
|
@ -3399,13 +3392,13 @@ impl<'help> App<'help> {
|
||||||
|
|
||||||
/// Iterate through the set of subcommands, getting a reference to each.
|
/// Iterate through the set of subcommands, getting a reference to each.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn get_subcommands(&self) -> impl Iterator<Item = &App<'help>> {
|
pub fn get_subcommands(&self) -> impl Iterator<Item = &Command<'help>> {
|
||||||
self.subcommands.iter()
|
self.subcommands.iter()
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Iterate through the set of subcommands, getting a mutable reference to each.
|
/// Iterate through the set of subcommands, getting a mutable reference to each.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn get_subcommands_mut(&mut self) -> impl Iterator<Item = &mut App<'help>> {
|
pub fn get_subcommands_mut(&mut self) -> impl Iterator<Item = &mut Command<'help>> {
|
||||||
self.subcommands.iter_mut()
|
self.subcommands.iter_mut()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3455,7 +3448,7 @@ impl<'help> App<'help> {
|
||||||
///
|
///
|
||||||
/// This does not recurse through subcommands of subcommands.
|
/// This does not recurse through subcommands of subcommands.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn find_subcommand<T>(&self, name: &T) -> Option<&App<'help>>
|
pub fn find_subcommand<T>(&self, name: &T) -> Option<&Command<'help>>
|
||||||
where
|
where
|
||||||
T: PartialEq<str> + ?Sized,
|
T: PartialEq<str> + ?Sized,
|
||||||
{
|
{
|
||||||
|
@ -3467,7 +3460,7 @@ impl<'help> App<'help> {
|
||||||
///
|
///
|
||||||
/// This does not recurse through subcommands of subcommands.
|
/// This does not recurse through subcommands of subcommands.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn find_subcommand_mut<T>(&mut self, name: &T) -> Option<&mut App<'help>>
|
pub fn find_subcommand_mut<T>(&mut self, name: &T) -> Option<&mut Command<'help>>
|
||||||
where
|
where
|
||||||
T: PartialEq<str> + ?Sized,
|
T: PartialEq<str> + ?Sized,
|
||||||
{
|
{
|
||||||
|
@ -3538,7 +3531,7 @@ impl<'help> App<'help> {
|
||||||
// ### Panics
|
// ### Panics
|
||||||
//
|
//
|
||||||
// If the given arg contains a conflict with an argument that is unknown to
|
// If the given arg contains a conflict with an argument that is unknown to
|
||||||
// this `App`.
|
// this `Command`.
|
||||||
fn get_global_arg_conflicts_with(&self, arg: &Arg) -> Vec<&Arg<'help>> // FIXME: This could probably have been an iterator
|
fn get_global_arg_conflicts_with(&self, arg: &Arg) -> Vec<&Arg<'help>> // FIXME: This could probably have been an iterator
|
||||||
{
|
{
|
||||||
arg.blacklist
|
arg.blacklist
|
||||||
|
@ -3573,7 +3566,7 @@ impl<'help> App<'help> {
|
||||||
// Subcommand_1.1 (doesn't contain Arg)
|
// Subcommand_1.1 (doesn't contain Arg)
|
||||||
// Subcommand_1.1.1 (contains Arg)
|
// Subcommand_1.1.1 (contains Arg)
|
||||||
//
|
//
|
||||||
fn get_subcommands_containing(&self, arg: &Arg) -> Vec<&App<'help>> {
|
fn get_subcommands_containing(&self, arg: &Arg) -> Vec<&Self> {
|
||||||
let mut vec = std::vec::Vec::new();
|
let mut vec = std::vec::Vec::new();
|
||||||
for idx in 0..self.subcommands.len() {
|
for idx in 0..self.subcommands.len() {
|
||||||
if self.subcommands[idx].args.args().any(|ar| ar.id == arg.id) {
|
if self.subcommands[idx].args.args().any(|ar| ar.id == arg.id) {
|
||||||
|
@ -3740,7 +3733,7 @@ impl<'help> App<'help> {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Internally used only
|
// Internally used only
|
||||||
impl<'help> App<'help> {
|
impl<'help> Command<'help> {
|
||||||
pub(crate) fn get_id(&self) -> Id {
|
pub(crate) fn get_id(&self) -> Id {
|
||||||
self.id.clone()
|
self.id.clone()
|
||||||
}
|
}
|
||||||
|
@ -4370,7 +4363,7 @@ To change `help`s short, call `cmd.arg(Arg::new(\"help\")...)`.",
|
||||||
&& !self.subcommands.iter().any(|s| s.id == Id::help_hash())
|
&& !self.subcommands.iter().any(|s| s.id == Id::help_hash())
|
||||||
{
|
{
|
||||||
debug!("Command::_check_help_and_version: Building help subcommand");
|
debug!("Command::_check_help_and_version: Building help subcommand");
|
||||||
let mut help_subcmd = App::new("help")
|
let mut help_subcmd = Command::new("help")
|
||||||
.about("Print this message or the help of the given subcommand(s)")
|
.about("Print this message or the help of the given subcommand(s)")
|
||||||
.arg(
|
.arg(
|
||||||
Arg::new("subcommand")
|
Arg::new("subcommand")
|
||||||
|
@ -4461,7 +4454,7 @@ pub(crate) trait Captures<'a> {}
|
||||||
impl<'a, T> Captures<'a> for T {}
|
impl<'a, T> Captures<'a> for T {}
|
||||||
|
|
||||||
// Internal Query Methods
|
// Internal Query Methods
|
||||||
impl<'help> App<'help> {
|
impl<'help> Command<'help> {
|
||||||
/// Iterate through the *flags* & *options* arguments.
|
/// Iterate through the *flags* & *options* arguments.
|
||||||
pub(crate) fn get_non_positionals(&self) -> impl Iterator<Item = &Arg<'help>> {
|
pub(crate) fn get_non_positionals(&self) -> impl Iterator<Item = &Arg<'help>> {
|
||||||
self.get_arguments().filter(|a| !a.is_positional())
|
self.get_arguments().filter(|a| !a.is_positional())
|
||||||
|
@ -4487,7 +4480,7 @@ impl<'help> App<'help> {
|
||||||
pub(crate) fn contains_short(&self, s: char) -> bool {
|
pub(crate) fn contains_short(&self, s: char) -> bool {
|
||||||
assert!(
|
assert!(
|
||||||
self.is_set(AppSettings::Built),
|
self.is_set(AppSettings::Built),
|
||||||
"If App::_build hasn't been called, manually search through Arg shorts"
|
"If Command::_build hasn't been called, manually search through Arg shorts"
|
||||||
);
|
);
|
||||||
|
|
||||||
self.args.contains(s)
|
self.args.contains(s)
|
||||||
|
@ -4724,7 +4717,7 @@ impl<'help> App<'help> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'help> Default for App<'help> {
|
impl<'help> Default for Command<'help> {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
Self {
|
Self {
|
||||||
id: Default::default(),
|
id: Default::default(),
|
||||||
|
@ -4766,7 +4759,7 @@ impl<'help> Default for App<'help> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'help> Index<&'_ Id> for App<'help> {
|
impl<'help> Index<&'_ Id> for Command<'help> {
|
||||||
type Output = Arg<'help>;
|
type Output = Arg<'help>;
|
||||||
|
|
||||||
fn index(&self, key: &Id) -> &Self::Output {
|
fn index(&self, key: &Id) -> &Self::Output {
|
||||||
|
@ -4774,7 +4767,7 @@ impl<'help> Index<&'_ Id> for App<'help> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl fmt::Display for App<'_> {
|
impl fmt::Display for Command<'_> {
|
||||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||||
write!(f, "{}", self.name)
|
write!(f, "{}", self.name)
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,9 +43,6 @@ pub use value_parser::NonEmptyStringValueParser;
|
||||||
pub use value_parser::OsStringValueParser;
|
pub use value_parser::OsStringValueParser;
|
||||||
pub use value_parser::PathBufValueParser;
|
pub use value_parser::PathBufValueParser;
|
||||||
|
|
||||||
#[allow(deprecated)]
|
|
||||||
pub use command::App;
|
|
||||||
|
|
||||||
pub(crate) use action::CountType;
|
pub(crate) use action::CountType;
|
||||||
pub(crate) use arg::display_arg_val;
|
pub(crate) use arg::display_arg_val;
|
||||||
pub(crate) use arg_predicate::ArgPredicate;
|
pub(crate) use arg_predicate::ArgPredicate;
|
||||||
|
|
|
@ -109,7 +109,6 @@ pub(crate) use crate::util::color::ColorChoice;
|
||||||
pub use crate::derive::{Args, CommandFactory, FromArgMatches, Parser, Subcommand, ValueEnum};
|
pub use crate::derive::{Args, CommandFactory, FromArgMatches, Parser, Subcommand, ValueEnum};
|
||||||
|
|
||||||
#[allow(deprecated)]
|
#[allow(deprecated)]
|
||||||
pub use crate::builder::App;
|
|
||||||
pub use crate::builder::{AppFlags, AppSettings, ArgFlags, ArgSettings, PossibleValue, ValueHint};
|
pub use crate::builder::{AppFlags, AppSettings, ArgFlags, ArgSettings, PossibleValue, ValueHint};
|
||||||
pub use crate::error::{ErrorKind, Result};
|
pub use crate::error::{ErrorKind, Result};
|
||||||
#[allow(deprecated)]
|
#[allow(deprecated)]
|
||||||
|
|
Loading…
Reference in a new issue