use std::path::Path;
use std::process::Command;
use tempfile::TempDir;
pub fn git(dir: &Path, args: &[&str]) {
let out = Command::new("git")
.current_dir(dir)
.args(args)
.output()
.unwrap();
assert!(
out.status.success(),
"git {args:?} failed: {}",
String::from_utf8_lossy(&out.stderr)
);
}
pub fn git_repo() -> TempDir {
let dir = super::temp_dir();
let path = dir.path();
git(path, &["init", "-q", "-b", "main"]);
git(path, &["config", "user.email", "test@test.com"]);
git(path, &["config", "user.name", "Test"]);
git(path, &["config", "commit.gpgsign", "false"]);
dir
}
pub fn commit_all(dir: &Path, message: &str) {
git(dir, &["add", "-A"]);
git(dir, &["commit", "-q", "-m", message]);
}