malvin 0.2.4

Non-interactive research and coding agent
#[cfg(test)]
use std::path::Path;

#[cfg(test)]
pub fn seed_malvin_checks(work: &Path, content: &str) {
    ensure_git_repo_for_checks_seed(work);
    let path = crate::malvin_checks_path(work);
    if let Some(parent) = path.parent() {
        std::fs::create_dir_all(parent).expect("mkdir checks parent");
    }
    std::fs::write(path, content).expect("write checks");
}

#[cfg(test)]
fn ensure_git_repo_for_checks_seed(work: &Path) {
    if crate::git_worktree_toplevel(work).is_none() {
        let _ = std::process::Command::new("git")
            .args(["init"])
            .current_dir(work)
            .status();
    }
}

#[cfg(test)]
pub fn seed_malvin_config(work: &Path, content: &str) {
    assert!(
        crate::workspace_paths::home_malvin_config_disk_io_allowed(),
        "seed_malvin_config requires with_isolated_home or activate_test_home (see plan.md)"
    );
    let path = crate::malvin_config_path(work);
    if let Some(parent) = path.parent() {
        std::fs::create_dir_all(parent).expect("mkdir ~/.malvin_home");
    }
    std::fs::write(path, content).expect("write ~/.malvin_home/config.toml");
}

#[cfg(test)]
#[path = "malvin_test_seed_tests.rs"]
mod malvin_test_seed_tests;