use anyhow::Result; use assert_cmd::prelude::*; use std::{fs::write, path::PathBuf, process::Command}; pub fn get_rgit_cmd() -> Command { Command::cargo_bin("r_git").expect("Failed to build binary") } pub fn get_git_cmd() -> Command { Command::new("git") } pub fn setup_rgit(path: &PathBuf) -> Result<()> { let mut cmd = Command::cargo_bin("r_git")?; cmd.current_dir(&path).arg("init").assert().success(); let rgitignore_path = path.join(".rgitignore"); write(rgitignore_path, ".git/").expect("Failed to write .rgitignore file"); std::env::set_var("RGIT_AUTHOR_NAME", "Test Author"); std::env::set_var("RGIT_AUTHOR_EMAIL", "test@example.com"); Ok(()) } pub fn setup_git(path: &PathBuf) -> Result<()> { let mut cmd = Command::new("git"); cmd.current_dir(&path).arg("init").assert().success(); let gitignore_path = path.join(".gitignore"); write(gitignore_path, ".rgit/").expect("Failed to write .gitignore file"); Ok(()) }