use serde::Deserialize;
const DEFAULT_HIDDEN_PATTERNS: &[&str] = &[".*", "node_modules", "target", "dist", "build"];
const DEFAULT_MAX_ITEMS: usize = 50_000;
#[derive(Debug, Clone)]
pub struct FinderConfig {
pub hidden_patterns: Vec<String>,
pub max_items: usize,
}
impl Default for FinderConfig {
fn default() -> Self {
Self {
hidden_patterns: DEFAULT_HIDDEN_PATTERNS
.iter()
.map(|s| (*s).into())
.collect(),
max_items: DEFAULT_MAX_ITEMS,
}
}
}
impl FinderConfig {
pub fn overlay(mut self, user: &FinderToml) -> Self {
if let Some(p) = &user.hidden_patterns {
self.hidden_patterns = p.clone();
}
if let Some(n) = user.max_items {
self.max_items = n;
}
self
}
}
#[derive(Debug, Default, Clone, Deserialize)]
pub struct FinderToml {
pub hidden_patterns: Option<Vec<String>>,
pub max_items: Option<usize>,
}