pub mod asset;
pub mod bindings;
pub mod build;
pub mod deploy;
pub mod extend;
pub mod fetch;
pub mod id;
pub mod inspect;
pub mod install;
pub mod invoke;
pub mod optimize;
pub mod read;
pub mod restore;
use crate::commands::global;
#[derive(Debug, clap::Subcommand)]
pub enum Cmd {
#[command(subcommand)]
Asset(asset::Cmd),
#[command(subcommand)]
Bindings(bindings::Cmd),
Build(build::Cmd),
Extend(extend::Cmd),
Deploy(deploy::wasm::Cmd),
Fetch(fetch::Cmd),
#[command(subcommand)]
Id(id::Cmd),
Inspect(inspect::Cmd),
Install(install::Cmd),
Invoke(invoke::Cmd),
Optimize(optimize::Cmd),
Read(read::Cmd),
Restore(restore::Cmd),
}
#[derive(thiserror::Error, Debug)]
pub enum Error {
#[error(transparent)]
Asset(#[from] asset::Error),
#[error(transparent)]
Bindings(#[from] bindings::Error),
#[error(transparent)]
Build(#[from] build::Error),
#[error(transparent)]
Extend(#[from] extend::Error),
#[error(transparent)]
Deploy(#[from] deploy::wasm::Error),
#[error(transparent)]
Fetch(#[from] fetch::Error),
#[error(transparent)]
Id(#[from] id::Error),
#[error(transparent)]
Inspect(#[from] inspect::Error),
#[error(transparent)]
Install(#[from] install::Error),
#[error(transparent)]
Invoke(#[from] invoke::Error),
#[error(transparent)]
Optimize(#[from] optimize::Error),
#[error(transparent)]
Read(#[from] read::Error),
#[error(transparent)]
Restore(#[from] restore::Error),
}
impl Cmd {
pub async fn run(&self, global_args: &global::Args) -> Result<(), Error> {
match &self {
Cmd::Asset(asset) => asset.run().await?,
Cmd::Bindings(bindings) => bindings.run().await?,
Cmd::Build(build) => build.run()?,
Cmd::Extend(extend) => extend.run().await?,
Cmd::Deploy(deploy) => deploy.run().await?,
Cmd::Id(id) => id.run()?,
Cmd::Inspect(inspect) => inspect.run()?,
Cmd::Install(install) => install.run().await?,
Cmd::Invoke(invoke) => invoke.run(global_args).await?,
Cmd::Optimize(optimize) => optimize.run()?,
Cmd::Fetch(fetch) => fetch.run().await?,
Cmd::Read(read) => read.run().await?,
Cmd::Restore(restore) => restore.run().await?,
}
Ok(())
}
}
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq, clap::ValueEnum)]
pub enum Durability {
Persistent,
Temporary,
}
impl From<&Durability> for soroban_env_host::xdr::ContractDataDurability {
fn from(d: &Durability) -> Self {
match d {
Durability::Persistent => soroban_env_host::xdr::ContractDataDurability::Persistent,
Durability::Temporary => soroban_env_host::xdr::ContractDataDurability::Temporary,
}
}
}
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq, clap::ValueEnum)]
pub enum SpecOutput {
XdrBase64,
XdrBase64Array,
Docs,
}