use std::process::{Command, Stdio};
pub fn stdout(args: &[&str]) -> Option<String> {
let out = Command::new("git")
.args(args)
.stderr(Stdio::null())
.output()
.ok()?;
if !out.status.success() {
return None;
}
let text = String::from_utf8_lossy(&out.stdout).trim().to_string();
(!text.is_empty()).then_some(text)
}
pub fn succeeds(args: &[&str]) -> bool {
exit_code(args) == Some(0)
}
pub fn exit_code(args: &[&str]) -> Option<i32> {
Command::new("git")
.args(args)
.stdout(Stdio::null())
.stderr(Stdio::null())
.status()
.ok()?
.code()
}