diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/app.rs | 22 | ||||
-rw-r--r-- | src/args.rs | 10 | ||||
-rw-r--r-- | src/main.rs | 7 |
3 files changed, 36 insertions, 3 deletions
@@ -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); } } |