use super::{config::locator, global};
use clap::Parser;
pub mod add;
pub mod default;
pub mod health;
pub mod info;
pub mod ls;
pub mod rm;
pub mod root_account;
pub mod settings;
pub mod unset;
#[derive(Debug, Parser)]
pub enum Cmd {
Add(add::Cmd),
Rm(rm::Cmd),
Ls(ls::Cmd),
#[command(name = "use")]
Default(default::Cmd),
Health(health::Cmd),
Info(info::Cmd),
Settings(settings::Cmd),
Unset(unset::Cmd),
#[command(subcommand)]
RootAccount(root_account::Cmd),
}
#[derive(thiserror::Error, Debug)]
pub enum Error {
#[error(transparent)]
Default(#[from] default::Error),
#[error(transparent)]
Add(#[from] add::Error),
#[error(transparent)]
Rm(#[from] rm::Error),
#[error(transparent)]
Ls(#[from] ls::Error),
#[error(transparent)]
Health(#[from] health::Error),
#[error(transparent)]
Info(#[from] info::Error),
#[error(transparent)]
Settings(#[from] settings::Error),
#[error(transparent)]
Unset(#[from] unset::Error),
#[error(transparent)]
RootAccount(#[from] root_account::Error),
}
impl Cmd {
pub async fn run(&self, global_args: &global::Args) -> Result<(), Error> {
match self {
Cmd::Default(cmd) => cmd.run(global_args)?,
Cmd::Add(cmd) => cmd.run()?,
Cmd::Rm(new) => new.run()?,
Cmd::Ls(cmd) => cmd.run()?,
Cmd::Health(cmd) => cmd.run(global_args).await?,
Cmd::Info(cmd) => cmd.run(global_args).await?,
Cmd::Settings(cmd) => cmd.run(global_args).await?,
Cmd::Unset(cmd) => cmd.run(global_args)?,
Cmd::RootAccount(cmd) => cmd.run(global_args)?,
}
Ok(())
}
}