mirror of
https://github.com/bootandy/dust.git
synced 2025-12-12 15:49:58 -08:00
Merge pull request #59 from Celti/exclude-multiple
Allow multiple --ignore-directory flags
This commit is contained in:
@@ -59,6 +59,8 @@ fn main() {
|
||||
.short("X")
|
||||
.long("ignore-directory")
|
||||
.takes_value(true)
|
||||
.number_of_values(1)
|
||||
.multiple(true)
|
||||
.help("Exclude any file or directory with contains this substring."),
|
||||
)
|
||||
.arg(
|
||||
@@ -135,12 +137,12 @@ fn main() {
|
||||
|
||||
let use_apparent_size = options.is_present("display_apparent_size");
|
||||
let limit_filesystem = options.is_present("limit_filesystem");
|
||||
let ignore_directory = options.value_of("ignore_directory");
|
||||
let ignore_directories = options.values_of("ignore_directory").map(|r| r.collect());
|
||||
|
||||
let simplified_dirs = simplify_dir_names(target_dirs);
|
||||
let (permissions, nodes) = get_dir_tree(
|
||||
&simplified_dirs,
|
||||
ignore_directory,
|
||||
ignore_directories,
|
||||
use_apparent_size,
|
||||
limit_filesystem,
|
||||
threads,
|
||||
|
||||
@@ -70,7 +70,7 @@ pub fn simplify_dir_names(filenames: Vec<&str>) -> HashSet<String> {
|
||||
|
||||
pub fn get_dir_tree(
|
||||
top_level_names: &HashSet<String>,
|
||||
ignore_directory: Option<&str>,
|
||||
ignore_directories: Option<Vec<&str>>,
|
||||
apparent_size: bool,
|
||||
limit_filesystem: bool,
|
||||
threads: Option<usize>,
|
||||
@@ -88,7 +88,7 @@ pub fn get_dir_tree(
|
||||
&b,
|
||||
apparent_size,
|
||||
&restricted_filesystems,
|
||||
&ignore_directory,
|
||||
&ignore_directories,
|
||||
&mut data,
|
||||
&mut permissions,
|
||||
threads,
|
||||
@@ -118,7 +118,7 @@ fn examine_dir(
|
||||
top_dir: &str,
|
||||
apparent_size: bool,
|
||||
filesystems: &Option<HashSet<u64>>,
|
||||
ignore_directory: &Option<&str>,
|
||||
ignore_directories: &Option<Vec<&str>>,
|
||||
data: &mut HashMap<String, u64>,
|
||||
file_count_no_permission: &mut u64,
|
||||
threads: Option<usize>,
|
||||
@@ -130,12 +130,14 @@ fn examine_dir(
|
||||
if let Some(threads_to_start) = threads {
|
||||
iter = iter.num_threads(threads_to_start);
|
||||
}
|
||||
for entry in iter {
|
||||
'entry: for entry in iter {
|
||||
if let Ok(e) = entry {
|
||||
let maybe_size_and_inode = get_metadata(&e, apparent_size);
|
||||
if let Some(d) = ignore_directory {
|
||||
if e.path().to_string_lossy().contains(*d) {
|
||||
continue;
|
||||
if let Some(d) = ignore_directories {
|
||||
for s in d {
|
||||
if e.path().to_string_lossy().contains(*s) {
|
||||
continue 'entry;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user