cargo-git 0.7.0

An opinionated helper command to use git with cargo. This does not replace the git command but should be used in conjunction with.
use std::os::unix::process::CommandExt;
use std::process::Command;

use crate::git::Git;
use crate::Commit;

pub fn run(params: Commit) -> Result<(), Box<dyn std::error::Error>> {
    let git = Git::open()?;
    let mut message = format!("{}\n\n", params.message.trim());

    let (forked_at, parent_branch) = git.get_parent()?;

    if let Some(hash) = forked_at {
        message.push_str(&format!("Forked at: {}\n", hash));
    }

    if let Some(branch) = parent_branch {
        message.push_str(&format!("Parent branch: {}\n", branch));
    }

    Err(Command::new("git")
        .args(&["commit", "-m", message.as_str()])
        .args(params.args)
        .exec()
        .into())
}