gou-git 0.2.0

Gou is a CLI git wrapper that enables trunk-based development
Documentation
use std::process::Command;

use pretty_log::PrettyError;

pub struct Git;

impl Git {
    pub fn stash() {
        Command::new("git")
            .arg("stash")
            .spawn()
            .expect_p("[gou] Failed to stash changes")
            .wait()
            .expect_p("[gou] Failed to wait for stash changes");
    }

    pub fn stash_pop() {
        Command::new("git")
            .arg("stash")
            .arg("pop")
            .spawn()
            .expect_p("[gou] Failed to pop stash")
            .wait()
            .expect_p("[gou] Failed to wait for pop stash");
    }

    pub fn checkout_create(branch_name: &str) {
        Command::new("git")
            .arg("checkout")
            .arg("-b")
            .arg(branch_name)
            .spawn()
            .expect_p("[gou] Failed to create feat branch")
            .wait()
            .expect_p("[gou] Failed to wait for feat branch");
    }

    pub fn checkout(branch_name: &str) {
        Command::new("git")
            .arg("checkout")
            .arg(branch_name)
            .spawn()
            .expect_p("[gou] Failed to checkout feat branch")
            .wait()
            .expect_p("[gou] Failed to wait for checkout feat branch");
    }

    pub fn add() {
        Command::new("git")
            .arg("add")
            .arg(".")
            .spawn()
            .expect_p("[gou] Failed to add changes")
            .wait()
            .expect_p("[gou] Failed to wait for add changes");
    }

    pub fn commit(message: &str) {
        Command::new("git")
            .arg("commit")
            .arg("-m")
            .arg(message)
            .spawn()
            .expect_p("[gou] Failed to commit changes")
            .wait()
            .expect_p("[gou] Failed to wait for commit changes");
    }

    pub fn push_set_upstream(branch_name: &str) {
        Command::new("git")
            .arg("push")
            .arg("--set-upstream")
            .arg("origin")
            .arg(&branch_name)
            .spawn()
            .expect_p("[gou] Failed to push changes")
            .wait()
            .expect_p("[gou] Failed to wait for push changes");
    }

    pub fn pull() {
        Command::new("git")
            .arg("pull")
            .spawn()
            .expect_p("[gou] Failed to pull changes")
            .wait()
            .expect_p("[gou] Failed to wait for pull changes");
    }
}