frep_core/
run.rs

1use anyhow::bail;
2
3use crate::validation::{
4    SearchConfiguration, SimpleErrorHandler, ValidationResult, validate_search_configuration,
5};
6
7pub fn find_and_replace(search_config: SearchConfiguration<'_>) -> anyhow::Result<String> {
8    let mut error_handler = SimpleErrorHandler::new();
9    let result = validate_search_configuration(search_config, &mut error_handler)?;
10    let searcher = match result {
11        ValidationResult::Success(searcher) => searcher,
12        ValidationResult::ValidationErrors => {
13            bail!("{}", error_handler.errors_str().unwrap());
14        }
15    };
16
17    let num_files_replaced = searcher.walk_files_and_replace(None);
18
19    Ok(format!(
20        "Success: {num_files_replaced} file{prefix} updated",
21        prefix = if num_files_replaced != 1 { "s" } else { "" },
22    ))
23}