use crate::common::print_formatted_error::print_formatted_error;
use std::{collections::BTreeMap, fs::OpenOptions, io::Write};
pub fn write_env_file(file_path: &str, env_vars: &BTreeMap<String, String>) {
let sorted_env_vars: BTreeMap<String, String> = env_vars
.iter()
.map(|(key, value)| (key.to_uppercase().replace('-', "_"), value.clone()))
.collect();
match OpenOptions::new()
.write(true)
.truncate(true)
.create(true)
.open(file_path)
{
Ok(mut file) => {
for (key, value) in sorted_env_vars {
if let Err(err) = writeln!(&mut file, "{}={}", key, value) {
print_formatted_error(&format!("Failed to write to file: {}", err));
std::process::exit(1);
}
}
}
Err(_) => {
print_formatted_error("Failed to open file for writing.");
std::process::exit(1);
}
}
}