use clap::Parser;
use std::fmt::Debug;
pub mod account;
pub mod account_data;
pub mod args;
pub mod claimable_balance;
pub mod contract_code;
pub mod contract_data;
pub mod liquidity_pool;
pub mod offer;
pub mod trustline;
#[derive(Debug, Parser)]
pub enum Cmd {
Account(account::Cmd),
ContractData(contract_data::Cmd),
ClaimableBalance(claimable_balance::Cmd),
LiquidityPool(liquidity_pool::Cmd),
ContractCode(contract_code::Cmd),
Trustline(trustline::Cmd),
Data(account_data::Cmd),
Offer(offer::Cmd),
}
#[derive(thiserror::Error, Debug)]
pub enum Error {
#[error(transparent)]
Account(#[from] account::Error),
#[error(transparent)]
ContractData(#[from] contract_data::Error),
#[error(transparent)]
ClaimableBalance(#[from] claimable_balance::Error),
#[error(transparent)]
LiquidityPool(#[from] liquidity_pool::Error),
#[error(transparent)]
Wasm(#[from] contract_code::Error),
#[error(transparent)]
Trustline(#[from] trustline::Error),
#[error(transparent)]
Data(#[from] account_data::Error),
#[error(transparent)]
Offer(#[from] offer::Error),
}
impl Cmd {
pub async fn run(&self) -> Result<(), Error> {
match self {
Cmd::Account(cmd) => cmd.run().await?,
Cmd::ContractData(cmd) => cmd.run().await?,
Cmd::ClaimableBalance(cmd) => cmd.run().await?,
Cmd::LiquidityPool(cmd) => cmd.run().await?,
Cmd::ContractCode(cmd) => cmd.run().await?,
Cmd::Trustline(cmd) => cmd.run().await?,
Cmd::Data(cmd) => cmd.run().await?,
Cmd::Offer(cmd) => cmd.run().await?,
}
Ok(())
}
}