use regex::Regex;
use std::error::Error;
use std::fs;
pub fn update_cmake_set(path: &str, var_name: &str, new_value: &str) -> Result<(), Box<dyn Error>> {
let content = fs::read_to_string(path)?;
let pattern = format!(r#"set\(\s*{}\s*"([^"]*)"(.*?)\)"#, regex::escape(var_name));
let re = Regex::new(&pattern)?;
let replaced = re.replace(&content, |caps: ®ex::Captures| {
format!(r#"set({} "{}" {})"#, var_name, new_value, &caps[2])
});
fs::write(path, replaced.as_ref())?;
Ok(())
}