use std::{path::PathBuf, sync::Arc};
use super::static_data::patterns::CompiledPattern;
#[derive(Debug, Clone)]
pub struct SecretMatch {
pub file_path: Arc<PathBuf>, pub line_number: usize,
pub line_content: String,
pub matched_text: String,
pub start_pos: usize,
pub end_pos: usize,
pub pattern: Arc<CompiledPattern>, pub entropy: f64, }
#[derive(Debug, Default)]
pub struct ScanStats {
pub files_scanned: usize,
pub files_skipped: usize,
pub processing_errors: usize,
pub total_matches: usize,
pub scan_duration_ms: u64,
}
#[derive(
Debug, Clone, Copy, PartialEq, clap::ValueEnum, serde::Serialize, serde::Deserialize, Default,
)]
pub enum ScanMode {
Sequential,
Parallel,
#[default]
Auto,
}
#[derive(Clone)]
pub struct Scanner {
pub(crate) binary_filter: std::sync::Arc<super::filters::directory::BinaryFilter>,
pub(crate) path_filter: std::sync::Arc<super::filters::directory::PathFilter>,
pub(crate) size_filter: std::sync::Arc<super::filters::directory::SizeFilter>,
pub(crate) prefilter: std::sync::Arc<super::filters::content::ContextPrefilter>,
pub(crate) regex_executor: std::sync::Arc<super::filters::content::RegexExecutor>,
pub(crate) comment_filter: std::sync::Arc<super::filters::content::CommentFilter>,
}