summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Gallant <jamslam@gmail.com>2018-02-06 18:26:23 -0500
committerAndrew Gallant <jamslam@gmail.com>2018-02-06 18:26:23 -0500
commit874f0b96a6c12658bc532c74306fb3391c64289a (patch)
tree55acaea461f9380257191bd07f802aaf21703fd4
parent706323ad8f2600db7d46482a7d95972b1416c0eb (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.rs3
-rw-r--r--src/app.rs22
2 files changed, 25 insertions, 0 deletions
diff --git a/build.rs b/build.rs
index 93c25858..9fc3ba5e 100644
--- a/build.rs
+++ b/build.rs
@@ -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.
diff --git a/src/app.rs b/src/app.rs
index c05fd01b..54787b8a 100644
--- a/src/app.rs
+++ b/src/app.rs
@@ -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.
///