search 1.1.0

A recursive search tool to locate files or find certain strings in files
use crate::util::file_search;
use indicatif::ProgressBar;
use std::time::Instant;

pub struct Config {
    pub search_type: SearchType,
    pub query: String,
    pub case_sensitive: bool,
    pub dirs: Vec<String>,
    pub progress_bar: Option<ProgressBar>,
}

impl Config {
    pub fn default() -> Self {
        Self {
            search_type: SearchType::LocateFile,
            query: "".to_string(),
            case_sensitive: false,
            dirs: vec![],
            progress_bar: None,
        }
    }

    pub fn run(self) {
        let start_time = Instant::now();
        let final_result = file_search::search(self.dirs, &self.query, self.search_type, self.case_sensitive);
        self.progress_bar.unwrap().finish_with_message(
            format!("Searched: {} files | Found {} match{} | Duration: {:#?} \n",
                    final_result.file_count, final_result.results.len(),
                    if final_result.results.len() == 0 { "" } else { "es" },
                    start_time.elapsed())
        );

        final_result.display();
    }
}

#[derive(PartialEq, Copy, Clone, Debug)]
pub enum SearchType {
    LocateFile,
    FindString,
}