main: add option -h to skip hidden files by default

This commit is contained in:
Astro 2021-12-10 21:00:33 +01:00
parent d03d5df1f8
commit 1a06f0cab2

View File

@ -38,6 +38,12 @@ fn main() {
.long("edit") .long("edit")
.help("Remove unused code and write to source file"), .help("Remove unused code and write to source file"),
) )
.arg(
clap::Arg::with_name("HIDDEN")
.short("h")
.long("hidden")
.help("Recurse into hidden subdirectories and process hidden .*.nix files"),
)
.arg( .arg(
clap::Arg::with_name("FILE_PATHS") clap::Arg::with_name("FILE_PATHS")
.multiple(true) .multiple(true)
@ -51,6 +57,14 @@ fn main() {
}; };
let quiet = matches.is_present("QUIET"); let quiet = matches.is_present("QUIET");
let edit = matches.is_present("EDIT"); let edit = matches.is_present("EDIT");
let is_visible = if matches.is_present("HIDDEN") {
|_: &walkdir::DirEntry| true
} else {
|entry: &walkdir::DirEntry| entry.file_name()
.to_str()
.map(|s| s == "." || ! s.starts_with("."))
.unwrap_or(false)
};
let file_paths = matches.values_of("FILE_PATHS").expect("FILE_PATHS"); let file_paths = matches.values_of("FILE_PATHS").expect("FILE_PATHS");
let files = file_paths.flat_map(|path| { let files = file_paths.flat_map(|path| {
@ -58,6 +72,8 @@ fn main() {
let files: Box<dyn Iterator<Item = String>> = if meta.is_dir() { let files: Box<dyn Iterator<Item = String>> = if meta.is_dir() {
Box::new( Box::new(
walkdir::WalkDir::new(path) walkdir::WalkDir::new(path)
.into_iter()
.filter_entry(is_visible)
.into_iter() .into_iter()
.map(|result| result.unwrap().path().display().to_string()) .map(|result| result.unwrap().path().display().to_string())
.filter(|path| { .filter(|path| {