mirror of
https://github.com/clap-rs/clap
synced 2024-12-13 06:12:40 +00:00
Merge pull request #3642 from epage/build
feat(clap): Publicly expose `Command::build`
This commit is contained in:
commit
c818ef401d
9 changed files with 24 additions and 12 deletions
|
@ -236,7 +236,7 @@ where
|
|||
G: Generator,
|
||||
S: Into<String>,
|
||||
{
|
||||
cmd._build_all();
|
||||
cmd.build();
|
||||
|
||||
gen.generate(cmd, buf)
|
||||
}
|
||||
|
|
|
@ -151,14 +151,14 @@ mod tests {
|
|||
fn built() -> Command<'static> {
|
||||
let mut cmd = common_app();
|
||||
|
||||
cmd._build_all();
|
||||
cmd.build();
|
||||
cmd
|
||||
}
|
||||
|
||||
fn built_with_version() -> Command<'static> {
|
||||
let mut cmd = common_app().version("3.0");
|
||||
|
||||
cmd._build_all();
|
||||
cmd.build();
|
||||
cmd
|
||||
}
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@ pub struct Man<'a> {
|
|||
impl<'a> Man<'a> {
|
||||
/// Create a new manual page.
|
||||
pub fn new(mut cmd: clap::Command<'a>) -> Self {
|
||||
cmd._build_all();
|
||||
cmd.build();
|
||||
let title = cmd.get_name().to_owned();
|
||||
let section = "1".to_owned();
|
||||
let date = "".to_owned();
|
||||
|
|
|
@ -3984,9 +3984,17 @@ impl<'help> App<'help> {
|
|||
Ok(matcher.into_inner())
|
||||
}
|
||||
|
||||
// used in clap_complete (https://github.com/clap-rs/clap_complete)
|
||||
#[doc(hidden)]
|
||||
#[deprecated(since = "3.1.10", note = "Replaced with `Command::build`")]
|
||||
pub fn _build_all(&mut self) {
|
||||
self.build();
|
||||
}
|
||||
|
||||
/// Prepare for introspecting on all included [`Command`]s
|
||||
///
|
||||
/// Call this on the top-level [`Command`] when done building and before reading state for
|
||||
/// cases like completions, custom help output, etc.
|
||||
pub fn build(&mut self) {
|
||||
self._build();
|
||||
for subcmd in self.get_subcommands_mut() {
|
||||
subcmd._build();
|
||||
|
@ -4047,9 +4055,13 @@ impl<'help> App<'help> {
|
|||
Some(sc)
|
||||
}
|
||||
|
||||
// used in clap_complete (https://github.com/clap-rs/clap_complete)
|
||||
#[doc(hidden)]
|
||||
#[deprecated(since = "3.1.10", note = "Replaced with `Command::build`")]
|
||||
pub fn _build(&mut self) {
|
||||
self._build_self()
|
||||
}
|
||||
|
||||
pub(crate) fn _build_self(&mut self) {
|
||||
debug!("App::_build");
|
||||
if !self.settings.is_set(AppSettings::Built) {
|
||||
// Make sure all the globally set flags apply to us as well
|
||||
|
|
|
@ -39,7 +39,7 @@ fn issue_2090() {
|
|||
let mut cmd = Command::new("cmd")
|
||||
.disable_version_flag(true)
|
||||
.subcommand(Command::new("sub"));
|
||||
cmd._build();
|
||||
cmd._build_self();
|
||||
|
||||
assert!(cmd
|
||||
.get_subcommands()
|
||||
|
|
|
@ -51,7 +51,7 @@ where
|
|||
None => subcommands
|
||||
.into_iter()
|
||||
.filter_map(|subcommand| {
|
||||
subcommand._build();
|
||||
subcommand._build_self();
|
||||
|
||||
let longs = subcommand.get_keymap().keys().filter_map(|a| {
|
||||
if let KeyType::Long(v) = a {
|
||||
|
|
|
@ -636,7 +636,7 @@ impl<'help, 'cmd> Parser<'help, 'cmd> {
|
|||
}
|
||||
.clone();
|
||||
|
||||
sc._build();
|
||||
sc._build_self();
|
||||
bin_name.push(' ');
|
||||
bin_name.push_str(sc.get_name());
|
||||
}
|
||||
|
|
|
@ -1176,7 +1176,7 @@ fn color_is_global() {
|
|||
let mut cmd = Command::new("myprog")
|
||||
.color(clap::ColorChoice::Never)
|
||||
.subcommand(Command::new("foo"));
|
||||
cmd._build_all();
|
||||
cmd.build();
|
||||
assert_eq!(cmd.get_color(), clap::ColorChoice::Never);
|
||||
|
||||
let sub = cmd.get_subcommands().collect::<Vec<_>>()[0];
|
||||
|
|
|
@ -2872,7 +2872,7 @@ fn disable_help_flag_affects_help_subcommand() {
|
|||
let mut cmd = Command::new("test_app")
|
||||
.disable_help_flag(true)
|
||||
.subcommand(Command::new("test").about("Subcommand"));
|
||||
cmd._build_all();
|
||||
cmd.build();
|
||||
|
||||
let args = cmd
|
||||
.find_subcommand("help")
|
||||
|
@ -2918,7 +2918,7 @@ fn help_without_short() {
|
|||
.arg(arg!(-h --hex <NUM>))
|
||||
.arg(arg!(--help));
|
||||
|
||||
cmd._build_all();
|
||||
cmd.build();
|
||||
let help = cmd.get_arguments().find(|a| a.get_id() == "help").unwrap();
|
||||
assert_eq!(help.get_short(), None);
|
||||
|
||||
|
|
Loading…
Reference in a new issue