summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/app.rs22
-rw-r--r--src/args.rs10
-rw-r--r--src/main.rs7
3 files changed, 36 insertions, 3 deletions
diff --git a/src/app.rs b/src/app.rs
index 5d4faac3..a0b4eaf6 100644
--- a/src/app.rs
+++ b/src/app.rs
@@ -544,6 +544,7 @@ pub fn all_args_and_flags() -> Vec<RGArg> {
flag_mmap(&mut args);
flag_no_config(&mut args);
flag_no_ignore(&mut args);
+ flag_no_ignore_messages(&mut args);
flag_no_ignore_parent(&mut args);
flag_no_ignore_vcs(&mut args);
flag_no_messages(&mut args);
@@ -1240,6 +1241,25 @@ This flag can be disabled with the --ignore flag.
args.push(arg);
}
+fn flag_no_ignore_messages(args: &mut Vec<RGArg>) {
+ const SHORT: &str = "Suppress gitignore parse error messages.";
+ const LONG: &str = long!("\
+Suppresses all error messages related to parsing ignore files such as .ignore
+or .gitignore.
+
+This flag can be disabled with the --ignore-messages flag.
+");
+ let arg = RGArg::switch("no-ignore-messages")
+ .help(SHORT).long_help(LONG)
+ .overrides("ignore-messages");
+ args.push(arg);
+
+ let arg = RGArg::switch("ignore-messages")
+ .hidden()
+ .overrides("no-ignore-messages");
+ args.push(arg);
+}
+
fn flag_no_ignore_parent(args: &mut Vec<RGArg>) {
const SHORT: &str = "Don't respect ignore files in parent directories.";
const LONG: &str = long!("\
@@ -1279,7 +1299,7 @@ This flag can be disabled with the --ignore-vcs flag.
}
fn flag_no_messages(args: &mut Vec<RGArg>) {
- const SHORT: &str = "Suppress all error messages.";
+ const SHORT: &str = "Suppress some error messages.";
const LONG: &str = long!("\
Suppress all error messages related to opening and reading files. Error
messages related to the syntax of the pattern given are still shown.
diff --git a/src/args.rs b/src/args.rs
index 2bbabf1a..96abec27 100644
--- a/src/args.rs
+++ b/src/args.rs
@@ -63,6 +63,7 @@ pub struct Args {
maxdepth: Option<usize>,
mmap: bool,
no_ignore: bool,
+ no_ignore_messages: bool,
no_ignore_parent: bool,
no_ignore_vcs: bool,
no_messages: bool,
@@ -308,6 +309,12 @@ impl Args {
self.no_messages
}
+ /// Returns true if error messages associated with parsing .ignore or
+ /// .gitignore files should be suppressed.
+ pub fn no_ignore_messages(&self) -> bool {
+ self.no_ignore_messages
+ }
+
/// Create a new recursive directory iterator over the paths in argv.
pub fn walker(&self) -> ignore::Walk {
self.walker_builder().build()
@@ -327,7 +334,7 @@ impl Args {
}
for path in &self.ignore_files {
if let Some(err) = wd.add_ignore(path) {
- if !self.no_messages {
+ if !self.no_messages && !self.no_ignore_messages {
eprintln!("{}", err);
}
}
@@ -402,6 +409,7 @@ impl<'a> ArgMatches<'a> {
maxdepth: self.usize_of("maxdepth")?,
mmap: mmap,
no_ignore: self.no_ignore(),
+ no_ignore_messages: self.is_present("no-ignore-messages"),
no_ignore_parent: self.no_ignore_parent(),
no_ignore_vcs: self.no_ignore_vcs(),
no_messages: self.is_present("no-messages"),
diff --git a/src/main.rs b/src/main.rs
index f0be94c0..761348f3 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -113,6 +113,7 @@ fn run_parallel(args: &Arc<Args>) -> Result<u64> {
args.stdout_handle(),
args.files(),
args.no_messages(),
+ args.no_ignore_messages(),
) {
None => return Continue,
Some(dent) => dent,
@@ -176,6 +177,7 @@ fn run_one_thread(args: &Arc<Args>) -> Result<u64> {
args.stdout_handle(),
args.files(),
args.no_messages(),
+ args.no_ignore_messages(),
) {
None => continue,
Some(dent) => dent,
@@ -241,6 +243,7 @@ fn run_files_parallel(args: Arc<Args>) -> Result<u64> {
args.stdout_handle(),
args.files(),
args.no_messages(),
+ args.no_ignore_messages(),
) {
tx.send(dent).unwrap();
}
@@ -260,6 +263,7 @@ fn run_files_one_thread(args: &Arc<Args>) -> Result<u64> {
args.stdout_handle(),
args.files(),
args.no_messages(),
+ args.no_ignore_messages(),
) {
None => continue,
Some(dent) => dent,
@@ -288,6 +292,7 @@ fn get_or_log_dir_entry(
stdout_handle: Option<&same_file::Handle>,
files_only: bool,
no_messages: bool,
+ no_ignore_messages: bool,
) -> Option<ignore::DirEntry> {
match result {
Err(err) => {
@@ -298,7 +303,7 @@ fn get_or_log_dir_entry(
}
Ok(dent) => {
if let Some(err) = dent.error() {
- if !no_messages {
+ if !no_messages && !no_ignore_messages {
eprintln!("{}", err);
}
}