Ctrl K
ComunidadGuías…

sync/src/utils.rs

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
use std::fs::{self, File};
use std::io::Write;
use tempfile::tempdir;

#[derive(Default)]
pub struct TempDirBuilder {
    files: Vec<(String, String)>,
}

impl TempDirBuilder {
    pub fn new() -> Self {
        Self::default()
    }

    pub fn add(&mut self, path: &str, content: &str) -> &mut Self {
        self.files.push((path.to_string(), content.to_string()));
        self
    }

    pub fn create(&self) -> tempfile::TempDir {
        let temp_dir = tempdir().expect("Failed to create temp dir");

        for (path, content) in &self.files {
            let file_path = temp_dir.path().join(path);
            if let Some(dir) = file_path.parent() {
                fs::create_dir_all(dir).expect("Failed to create directory");
            }
            let mut file = File::create(&file_path).expect("Failed to create test file");
            writeln!(file, "{content}").expect("Failed to write to test file");
        }

        temp_dir
    }
}