use std::fs;
use std::env;
use std::process;
use std::error::Error;
use borshwsc_minigrep as minigrep;
fn main() {
let config = minigrep::Config::build(env::args()).unwrap_or_else(|err| {
eprintln!("Problem parsing arguments: {err}");
process::exit(1);
});
println!("Searching for {}", config.query);
println!("In file {}", config.file_path);
println!();
if let Err(e) = run(config) {
eprintln!("Application error: {e}");
process::exit(1);
}
}
fn run(config: minigrep::Config) -> Result<(), Box<dyn Error>> {
let contents = fs::read_to_string(config.file_path)?;
let results = if config.ignore_case {
minigrep::search_case_insensitive(&config.query, &contents)
} else {
minigrep::search(&config.query, &contents)
};
for line in results {
println!("{line}");
}
Ok(())
}