use anyhow::Result;
use std::process::Command;
pub fn run_git_command(args: &[&str]) -> Result<String> {
let output = Command::new("git").args(args).output()?;
if output.status.success() {
Ok(String::from_utf8_lossy(&output.stdout).trim().to_string())
} else {
let stderr = String::from_utf8_lossy(&output.stderr);
anyhow::bail!("Git command failed: {}", stderr.trim());
}
}
pub fn generate_branch_name(identifier: &str, title: &str) -> String {
let slug: String = title
.to_lowercase()
.chars()
.map(|c| if c.is_alphanumeric() { c } else { '-' })
.collect::<String>()
.split('-')
.filter(|s| !s.is_empty())
.collect::<Vec<_>>()
.join("-");
let slug = if slug.len() > 50 {
slug[..50].trim_end_matches('-').to_string()
} else {
slug
};
format!("{}/{}", identifier.to_lowercase(), slug)
}