use super::global;
pub mod args;
pub mod decode;
pub mod edit;
pub mod encode;
pub mod fetch;
pub mod hash;
pub mod help;
pub mod new;
pub mod op;
pub mod send;
pub mod sign;
pub mod simulate;
pub mod update;
pub mod xdr;
pub use args::Args;
#[derive(Debug, clap::Subcommand)]
pub enum Cmd {
#[command(subcommand)]
Update(update::Cmd),
Edit(edit::Cmd),
Hash(hash::Cmd),
#[command(subcommand)]
New(new::Cmd),
#[command(subcommand, visible_alias = "op")]
Operation(op::Cmd),
Send(send::Cmd),
Sign(sign::Cmd),
Simulate(simulate::Cmd),
Fetch(fetch::Cmd),
Decode(decode::Cmd),
Encode(encode::Cmd),
}
#[derive(thiserror::Error, Debug)]
pub enum Error {
#[error(transparent)]
Hash(#[from] hash::Error),
#[error(transparent)]
New(#[from] new::Error),
#[error(transparent)]
Edit(#[from] edit::Error),
#[error(transparent)]
Op(#[from] op::Error),
#[error(transparent)]
Send(#[from] send::Error),
#[error(transparent)]
Sign(#[from] sign::Error),
#[error(transparent)]
Args(#[from] args::Error),
#[error(transparent)]
Simulate(#[from] simulate::Error),
#[error(transparent)]
Update(#[from] update::Error),
#[error(transparent)]
Fetch(#[from] fetch::Error),
#[error(transparent)]
Decode(#[from] decode::Error),
#[error(transparent)]
Encode(#[from] encode::Error),
}
impl Cmd {
pub async fn run(&self, global_args: &global::Args) -> Result<(), Error> {
match self {
Cmd::Hash(cmd) => cmd.run(global_args)?,
Cmd::New(cmd) => cmd.run(global_args).await?,
Cmd::Edit(cmd) => cmd.run(global_args)?,
Cmd::Operation(cmd) => cmd.run(global_args).await?,
Cmd::Send(cmd) => cmd.run(global_args).await?,
Cmd::Sign(cmd) => cmd.run(global_args).await?,
Cmd::Simulate(cmd) => cmd.run(global_args).await?,
Cmd::Update(cmd) => cmd.run(global_args).await?,
Cmd::Fetch(cmd) => cmd.run(global_args).await?,
Cmd::Decode(cmd) => cmd.run()?,
Cmd::Encode(cmd) => cmd.run()?,
}
Ok(())
}
}