gitbit 0.1.0

A lightweight Git automation tool that generates commit messages from diffs using AI (Gemini).
use std::process::Command;

pub fn get_remote_origin() -> Option<String> {
    let output = Command::new("git")
        .args(["remote", "get-url", "origin"])
        .output()
        .ok()?;

    if !output.status.success() { return None; }

    let url = String::from_utf8_lossy(&output.stdout).trim().to_string();
    if url.is_empty() { None } else { Some(url) }
}

pub fn get_current_branch() -> Option<String> {
    let output = Command::new("git")
        .args(["rev-parse", "--abbrev-ref", "HEAD"])
        .output()
        .ok()?;

    if !output.status.success() { return None; }

    let branch = String::from_utf8_lossy(&output.stdout).trim().to_string();
    Some(branch)
}

pub fn set_ssh_remote(user: &str, repo: &str) {
    let ssh_url = format!("git@github.com:{}/{}.git", user, repo);

    Command::new("git")
        .args(["remote", "set-url", "origin", &ssh_url])
        .status()
        .expect("Failed to set SSH remote");
}

pub fn get_repo_parts(url: &str) -> Option<(String, String)> {
    let repo = url.split('/').last()?.replace(".git", "");
    let user = url.split('/').rev().nth(1)?.to_string();
    Some((user, repo))
}