mirror of
https://github.com/bootandy/dust.git
synced 2026-06-08 11:29:05 +03:00
Feature: Add min-size parameter
Add often requested feature. '--min-size 50000' will only include files above a size of 50kB
This commit is contained in:
+8
-8
@@ -7,6 +7,7 @@ use std::path::PathBuf;
|
||||
|
||||
pub fn get_biggest(
|
||||
top_level_nodes: Vec<Node>,
|
||||
min_size: Option<usize>,
|
||||
n: usize,
|
||||
depth: usize,
|
||||
using_a_filter: bool,
|
||||
@@ -22,14 +23,14 @@ pub fn get_biggest(
|
||||
let mut allowed_nodes = HashSet::new();
|
||||
|
||||
allowed_nodes.insert(root.name.as_path());
|
||||
heap = add_children(using_a_filter, &root, depth, heap);
|
||||
heap = add_children(using_a_filter, min_size, &root, depth, heap);
|
||||
|
||||
for _ in number_top_level_nodes..n {
|
||||
let line = heap.pop();
|
||||
match line {
|
||||
Some(line) => {
|
||||
allowed_nodes.insert(line.name.as_path());
|
||||
heap = add_children(using_a_filter, line, depth, heap);
|
||||
heap = add_children(using_a_filter, min_size, line, depth, heap);
|
||||
}
|
||||
None => break,
|
||||
}
|
||||
@@ -39,17 +40,16 @@ pub fn get_biggest(
|
||||
|
||||
fn add_children<'a>(
|
||||
using_a_filter: bool,
|
||||
min_size: Option<usize>,
|
||||
file_or_folder: &'a Node,
|
||||
depth: usize,
|
||||
mut heap: BinaryHeap<&'a Node>,
|
||||
) -> BinaryHeap<&'a Node> {
|
||||
if depth > file_or_folder.depth {
|
||||
heap.extend(
|
||||
file_or_folder
|
||||
.children
|
||||
.iter()
|
||||
.filter(|c| !using_a_filter || c.name.is_file() || c.size > 0),
|
||||
)
|
||||
heap.extend(file_or_folder.children.iter().filter(|c| match min_size {
|
||||
Some(ms) => c.size > ms as u64,
|
||||
None => !using_a_filter || c.name.is_file() || c.size > 0,
|
||||
}))
|
||||
}
|
||||
heap
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user