feat: Give control over ignoring hidden files

This commit is contained in:
Ed Page 2019-07-10 07:21:02 -06:00
parent 166e2630c0
commit 867c53043b

View file

@ -32,6 +32,7 @@ impl Default for Format {
} }
#[derive(Debug, StructOpt)] #[derive(Debug, StructOpt)]
#[structopt(rename_all = "kebab-case")]
struct Options { struct Options {
#[structopt(parse(from_os_str), default_value = ".")] #[structopt(parse(from_os_str), default_value = ".")]
/// Paths to check /// Paths to check
@ -47,6 +48,12 @@ struct Options {
#[structopt(short = "j", long = "threads", default_value = "0")] #[structopt(short = "j", long = "threads", default_value = "0")]
/// The approximate number of threads to use. /// The approximate number of threads to use.
threads: usize, threads: usize,
#[structopt(long, raw(overrides_with = r#""no-hidden""#))]
/// Search hidden files and directories.
hidden: bool,
#[structopt(long, raw(overrides_with = r#""hidden""#), raw(hidden = "true"))]
no_hidden: bool,
} }
impl Options { impl Options {
@ -57,6 +64,15 @@ impl Options {
self self
} }
pub fn ignore_hidden(&self) -> Option<bool> {
match (self.hidden, self.no_hidden) {
(true, false) => Some(false),
(false, true) => Some(true),
(false, false) => None,
(_, _) => unreachable!("StructOpt should make this impossible"),
}
}
} }
fn run() -> Result<(), failure::Error> { fn run() -> Result<(), failure::Error> {
@ -72,7 +88,8 @@ fn run() -> Result<(), failure::Error> {
for path in &options.path[1..] { for path in &options.path[1..] {
walk.add(path); walk.add(path);
} }
walk.threads(options.threads); walk.threads(options.threads)
.hidden(options.ignore_hidden().unwrap_or(true));
// TODO Add build_parallel for options.threads != 1 // TODO Add build_parallel for options.threads != 1
for entry in walk.build() { for entry in walk.build() {
let entry = entry?; let entry = entry?;