imp(AppSettings): adds ability to add multiple settings at once

This commit is contained in:
Kevin K 2015-08-14 20:17:14 -04:00
parent 3b020f9e42
commit 4a00e2510d

View file

@ -53,7 +53,7 @@ enum DidYouMeanMessageStyle {
EnumValue, EnumValue,
} }
/// Some application options /// Some application options
pub enum AppSettings { pub enum AppSettings {
/// Allows subcommands to override all requirements of the parent (this command). For example /// Allows subcommands to override all requirements of the parent (this command). For example
/// if you had a subcommand or even top level application which had a required arguments that /// if you had a subcommand or even top level application which had a required arguments that
@ -685,9 +685,7 @@ impl<'a, 'v, 'ab, 'u, 'h, 'ar> App<'a, 'v, 'ab, 'u, 'h, 'ar>{
self self
} }
/// Enables Application Option, passed as argument /// Enables Application level settings, passed as argument
///
///
/// ///
/// # Example /// # Example
/// ///
@ -698,8 +696,13 @@ impl<'a, 'v, 'ab, 'u, 'h, 'ar> App<'a, 'v, 'ab, 'u, 'h, 'ar>{
/// .setting(AppSettings::WaitOnError) /// .setting(AppSettings::WaitOnError)
/// # ; /// # ;
/// ``` /// ```
pub fn setting(mut self, option: AppSettings) -> Self { pub fn setting(mut self, setting: AppSettings) -> Self {
match option { self.add_setting(&setting);
self
}
fn add_setting(&mut self, s: &AppSettings) {
match *s {
AppSettings::SubcommandsNegateReqs => self.subcmds_neg_reqs = true, AppSettings::SubcommandsNegateReqs => self.subcmds_neg_reqs = true,
AppSettings::SubcommandRequired => self.no_sc_error = true, AppSettings::SubcommandRequired => self.no_sc_error = true,
AppSettings::ArgRequiredElseHelp => self.help_on_no_args = true, AppSettings::ArgRequiredElseHelp => self.help_on_no_args = true,
@ -709,6 +712,23 @@ impl<'a, 'v, 'ab, 'u, 'h, 'ar> App<'a, 'v, 'ab, 'u, 'h, 'ar>{
AppSettings::WaitOnError => self.wait_on_error = true, AppSettings::WaitOnError => self.wait_on_error = true,
AppSettings::SubcommandRequiredElseHelp => self.help_on_no_sc = true, AppSettings::SubcommandRequiredElseHelp => self.help_on_no_sc = true,
} }
}
/// Enables multiple Application level settings, passed as argument
///
/// # Example
///
/// ```no_run
/// # use clap::{App, Arg, AppSettings};
/// App::new("myprog")
/// .settings( &[AppSettings::SubcommandRequired,
/// AppSettings::WaitOnError])
/// # ;
/// ```
pub fn settings(mut self, settings: &[AppSettings]) -> Self {
for s in settings {
self.add_setting(s);
}
self self
} }