mint_cli/
writer.rs

1use std::path::Path;
2
3use crate::output::args::{OutputArgs, OutputFormat};
4use crate::output::errors::OutputError;
5
6pub fn write_output(
7    args: &OutputArgs,
8    block_name: &str,
9    contents: &str,
10) -> Result<(), OutputError> {
11    let mut name_parts: Vec<String> = Vec::new();
12    if !args.prefix.is_empty() {
13        name_parts.push(args.prefix.clone());
14    }
15    name_parts.push(block_name.to_string());
16    if !args.suffix.is_empty() {
17        name_parts.push(args.suffix.clone());
18    }
19    let ext = match args.format {
20        OutputFormat::Hex => "hex",
21        OutputFormat::Mot => "mot",
22    };
23    let out_filename = format!("{}.{}", name_parts.join("_"), ext);
24    let out_path = Path::new(&args.out).join(out_filename);
25    std::fs::write(out_path, contents).map_err(|e| {
26        OutputError::FileError(format!("failed to write block {}: {}", block_name, e))
27    })?;
28    Ok(())
29}