hermes-cli-components 0.1.0

Implementation of an IBC Relayer in Rust, as a library
Documentation
use crate::impls::commands::queries::client_state::QueryClientStateArgs;
use crate::impls::commands::queries::client_status::QueryClientStatusArgs;
use crate::impls::commands::queries::consensus_state::QueryConsensusStateArgs;
use crate::traits::command::{CanRunCommand, CommandRunner};

pub struct RunQueryClientSubCommand;

#[derive(Debug, clap::Subcommand)]
pub enum QueryClientSubCommand {
    /// Query the state of a client
    State(QueryClientStateArgs),

    /// Query the status of a client
    Status(QueryClientStatusArgs),

    /// Query the consensus state of a client
    Consensus(QueryConsensusStateArgs),
}

impl<App> CommandRunner<App, QueryClientSubCommand> for RunQueryClientSubCommand
where
    App: CanRunCommand<QueryClientStateArgs>
        + CanRunCommand<QueryClientStatusArgs>
        + CanRunCommand<QueryConsensusStateArgs>,
{
    async fn run_command(
        app: &App,
        subcommand: &QueryClientSubCommand,
    ) -> Result<App::Output, App::Error> {
        match subcommand {
            QueryClientSubCommand::State(args) => app.run_command(args).await,
            QueryClientSubCommand::Status(args) => app.run_command(args).await,
            QueryClientSubCommand::Consensus(args) => app.run_command(args).await,
        }
    }
}