mirror of
https://github.com/bootandy/dust.git
synced 2026-06-08 11:29:05 +03:00
feat: new param: ignore-all-in-file
Add new cmd line param to ignore all files or directories listed in this file
This commit is contained in:
@@ -37,6 +37,13 @@ pub fn build_cli() -> Command {
|
||||
.long("ignore-directory")
|
||||
.action(clap::ArgAction::Append)
|
||||
.help("Exclude any file or directory with this name"),
|
||||
)
|
||||
.arg(
|
||||
Arg::new("ignore_all_in_file")
|
||||
.short('I')
|
||||
.long("ignore-all-in-file")
|
||||
.value_parser(value_parser!(String))
|
||||
.help("Exclude any file or directory with a regex matching that listed in this file, the file entries will be added to the ignore regexs provided by --invert_filter"),
|
||||
)
|
||||
.arg(
|
||||
Arg::new("dereference_links")
|
||||
|
||||
+20
@@ -17,7 +17,9 @@ use display::InitialDisplayData;
|
||||
use filter::AggregateData;
|
||||
use progress::PIndicator;
|
||||
use progress::ORDERING;
|
||||
use regex::Error;
|
||||
use std::collections::HashSet;
|
||||
use std::fs::read_to_string;
|
||||
use std::panic;
|
||||
use std::process;
|
||||
use sysinfo::{System, SystemExt};
|
||||
@@ -142,6 +144,24 @@ fn main() {
|
||||
None => vec![],
|
||||
};
|
||||
|
||||
let ignore_from_file_result = match options.get_one::<String>("ignore_all_in_file") {
|
||||
Some(val) => read_to_string(val)
|
||||
.unwrap()
|
||||
.lines()
|
||||
.map(Regex::new)
|
||||
.collect::<Vec<Result<Regex, Error>>>(),
|
||||
None => vec![],
|
||||
};
|
||||
let ignore_from_file = ignore_from_file_result
|
||||
.into_iter()
|
||||
.filter_map(|x| x.ok())
|
||||
.collect::<Vec<Regex>>();
|
||||
|
||||
let invert_filter_regexs = invert_filter_regexs
|
||||
.into_iter()
|
||||
.chain(ignore_from_file)
|
||||
.collect::<Vec<Regex>>();
|
||||
|
||||
let by_filecount = options.get_flag("by_filecount");
|
||||
let limit_filesystem = options.get_flag("limit_filesystem");
|
||||
let follow_links = options.get_flag("dereference_links");
|
||||
|
||||
Reference in New Issue
Block a user