diff options
author | Andrew Gallant <jamslam@gmail.com> | 2018-02-06 18:26:23 -0500 |
---|---|---|
committer | Andrew Gallant <jamslam@gmail.com> | 2018-02-06 18:26:23 -0500 |
commit | 874f0b96a6c12658bc532c74306fb3391c64289a (patch) | |
tree | 55acaea461f9380257191bd07f802aaf21703fd4 | |
parent | 706323ad8f2600db7d46482a7d95972b1416c0eb (diff) |
argv: support hidden flags
This commit adds support for hidden flags. The purpose of hidden flags
is for things that end users likely won't need unless they have a
configuration file that disables ripgrep's defaults. These flags will
provide a way to re-enable ripgrep's defaults.
-rw-r--r-- | build.rs | 3 | ||||
-rw-r--r-- | src/app.rs | 22 |
2 files changed, 25 insertions, 0 deletions
@@ -99,6 +99,9 @@ fn formatted_options() -> io::Result<String> { let mut formatted = vec![]; for arg in args { + if arg.hidden { + continue; + } // ripgrep only has two positional arguments, and probably will only // ever have two positional arguments, so we just hardcode them into // the template. @@ -135,6 +135,18 @@ pub struct RGArg { /// /// This is shown in the `--help` output. pub doc_long: &'static str, + /// Whether this flag is hidden or not. + /// + /// This is typically used for uncommon flags that only serve to override + /// other flags. For example, --no-ignore is a prominent flag that disables + /// ripgrep's gitignore functionality, but --ignore re-enables it. Since + /// gitignore support is enabled by default, use of the --ignore flag is + /// somewhat niche and relegated to special cases when users make use of + /// configuration files to set defaults. + /// + /// Generally, these flags should be documented in the documentation for + /// the flag they override. + pub hidden: bool, /// The type of this argument. pub kind: RGArgKind, } @@ -238,6 +250,7 @@ impl RGArg { name: name, doc_short: "", doc_long: "", + hidden: false, kind: RGArgKind::Positional { value_name: value_name, multiple: false, @@ -261,6 +274,7 @@ impl RGArg { name: long_name, doc_short: "", doc_long: "", + hidden: false, kind: RGArgKind::Switch { long: long_name, short: None, @@ -290,6 +304,7 @@ impl RGArg { name: long_name, doc_short: "", doc_long: "", + hidden: false, kind: RGArgKind::Flag { long: long_name, short: None, @@ -367,6 +382,13 @@ impl RGArg { self } + /// Hide this flag from all documentation. + fn hidden(mut self) -> RGArg { + self.hidden = true; + self.claparg = self.claparg.hidden(true); + self + } + /// Set the possible values for this argument. If this argument is not /// a flag, then this panics. /// |