gitez 0.1.2

Gitez is a CLI that simplifies managing your Git repositories.
Documentation
use crate::GlobalConfig;
use anyhow::Result;
use serde::{Deserialize, Serialize};

mod add;
mod apply;
mod include;
mod list;
mod remove;

pub use add::add as add_git_user_config;
pub use apply::apply as apply_git_user_config;
pub use include::include as include_git_config;
pub use list::list as list_git_user_config;
pub use remove::remove as remove_git_user_config;

#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct GitUserConfig {
  pub config_id: String,
  pub name: String,
  pub email: String,
}

impl GitUserConfig {
  pub fn new(config_id: &str, name: &str, email: &str) -> Self {
    Self {
      config_id: config_id.to_string(),
      name: name.to_string(),
      email: email.to_string(),
    }
  }

  pub fn add(self) -> Result<()> {
    let mut global_config = GlobalConfig::new()?;
    global_config.add_git_user_config(self)?;
    Ok(())
  }

  pub fn get_all() -> Result<Vec<GitUserConfig>> {
    let global_config = GlobalConfig::new()?;
    Ok(global_config.get_git_user_configs())
  }

  pub fn remove(config_id: &str) -> Result<()> {
    let mut global_config = GlobalConfig::new()?;
    global_config.remove_git_user_config(config_id)?;
    Ok(())
  }
}