use super::defaults::{DEFAULT_EXCLUDES, DEFAULT_INCLUDES};
#[derive(Debug, Clone)]
pub struct FileResolverConfig {
pub tool_name: String,
pub include: Vec<String>,
pub extend_include: Vec<String>,
pub exclude: Option<Vec<String>>,
pub extend_exclude: Vec<String>,
pub respect_gitignore: bool,
pub force_exclude: bool,
pub files_max_size: u64,
}
impl Default for FileResolverConfig {
fn default() -> Self {
Self {
tool_name: "flowmark".to_string(),
include: DEFAULT_INCLUDES.iter().map(|s| (*s).to_string()).collect(),
extend_include: Vec::new(),
exclude: None,
extend_exclude: Vec::new(),
respect_gitignore: true,
force_exclude: false,
files_max_size: 1_048_576, }
}
}
impl FileResolverConfig {
pub fn effective_include(&self) -> Vec<String> {
let mut result = self.include.clone();
result.extend(self.extend_include.clone());
result
}
pub fn effective_exclude(&self) -> Vec<String> {
let base: Vec<String> = if let Some(ref exclude) = self.exclude {
exclude.clone()
} else {
DEFAULT_EXCLUDES.iter().map(|s| (*s).to_string()).collect()
};
let mut result = base;
result.extend(self.extend_exclude.clone());
result
}
}