summaryrefslogtreecommitdiffstats
path: root/third_party/rust/clap_builder/src/builder/app_settings.rs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--third_party/rust/clap_builder/src/builder/app_settings.rs83
1 files changed, 83 insertions, 0 deletions
diff --git a/third_party/rust/clap_builder/src/builder/app_settings.rs b/third_party/rust/clap_builder/src/builder/app_settings.rs
new file mode 100644
index 0000000000..4fce4b4a2e
--- /dev/null
+++ b/third_party/rust/clap_builder/src/builder/app_settings.rs
@@ -0,0 +1,83 @@
+#[allow(unused)]
+use crate::Arg;
+#[allow(unused)]
+use crate::Command;
+
+#[derive(Default, Copy, Clone, Debug, PartialEq, Eq)]
+pub(crate) struct AppFlags(u32);
+
+impl AppFlags {
+ pub(crate) fn set(&mut self, setting: AppSettings) {
+ self.0 |= setting.bit();
+ }
+
+ pub(crate) fn unset(&mut self, setting: AppSettings) {
+ self.0 &= !setting.bit();
+ }
+
+ pub(crate) fn is_set(&self, setting: AppSettings) -> bool {
+ self.0 & setting.bit() != 0
+ }
+
+ pub(crate) fn insert(&mut self, other: Self) {
+ self.0 |= other.0;
+ }
+}
+
+impl std::ops::BitOr for AppFlags {
+ type Output = Self;
+
+ fn bitor(mut self, rhs: Self) -> Self::Output {
+ self.insert(rhs);
+ self
+ }
+}
+
+/// Application level settings, which affect how [`Command`] operates
+///
+/// **NOTE:** When these settings are used, they apply only to current command, and are *not*
+/// propagated down or up through child or parent subcommands
+///
+/// [`Command`]: crate::Command
+#[derive(Debug, PartialEq, Copy, Clone)]
+#[repr(u8)]
+pub(crate) enum AppSettings {
+ IgnoreErrors,
+ AllowHyphenValues,
+ AllowNegativeNumbers,
+ AllArgsOverrideSelf,
+ AllowMissingPositional,
+ TrailingVarArg,
+ DontDelimitTrailingValues,
+ InferLongArgs,
+ InferSubcommands,
+ SubcommandRequired,
+ AllowExternalSubcommands,
+ Multicall,
+ SubcommandsNegateReqs,
+ ArgsNegateSubcommands,
+ SubcommandPrecedenceOverArg,
+ ArgRequiredElseHelp,
+ NextLineHelp,
+ DisableColoredHelp,
+ DisableHelpFlag,
+ DisableHelpSubcommand,
+ DisableVersionFlag,
+ PropagateVersion,
+ Hidden,
+ HidePossibleValues,
+ HelpExpected,
+ NoBinaryName,
+ #[allow(dead_code)]
+ ColorAuto,
+ ColorAlways,
+ ColorNever,
+ Built,
+ BinNameBuilt,
+}
+
+impl AppSettings {
+ fn bit(self) -> u32 {
+ 1 << (self as u8)
+ }
+}