gitez 0.1.2

Gitez is a CLI that simplifies managing your Git repositories.
Documentation
use clap::Parser;
use gitez::{
  add_git_user_config, apply_git_user_config, clone_repo, gen_ssh_key, get_git_user_config_id, include_git_config,
  list_git_user_config, remove_git_user_config, set_base_dir, Cli, Commands, GlobalConfig, UserConfigSubCommands,
};

fn main() -> anyhow::Result<()> {
  GlobalConfig::init()?;

  let cli = Cli::parse();

  match cli.command {
    Commands::SetBaseDir(opts) => {
      set_base_dir(&opts.base_dir)?;
    }
    Commands::Clone(opts) => {
      clone_repo(&opts.url)?;
    }
    Commands::GenSSHKey => {
      gen_ssh_key()?;
    }
    Commands::UserConfig(user_config_subcommands) => match user_config_subcommands {
      UserConfigSubCommands::Add => {
        add_git_user_config()?;
      }
      UserConfigSubCommands::Apply { config_id } => {
        let config_id = get_git_user_config_id(config_id)?;
        apply_git_user_config(config_id)?
      }
      UserConfigSubCommands::List => {
        list_git_user_config()?;
      }
      UserConfigSubCommands::Remove { config_id } => {
        let config_id = get_git_user_config_id(config_id)?;
        remove_git_user_config(config_id)?;
      }
      UserConfigSubCommands::AddInclude => {
        include_git_config()?;
      }
    },
  }

  Ok(())
}