hermes_cli_components/impls/commands/queries/
client.rs

1use crate::impls::commands::queries::client_state::QueryClientStateArgs;
2use crate::impls::commands::queries::client_status::QueryClientStatusArgs;
3use crate::impls::commands::queries::consensus_state::QueryConsensusStateArgs;
4use crate::traits::command::{CanRunCommand, CommandRunner};
5
6pub struct RunQueryClientSubCommand;
7
8#[derive(Debug, clap::Subcommand)]
9pub enum QueryClientSubCommand {
10    /// Query the state of a client
11    State(QueryClientStateArgs),
12
13    /// Query the status of a client
14    Status(QueryClientStatusArgs),
15
16    /// Query the consensus state of a client
17    Consensus(QueryConsensusStateArgs),
18}
19
20impl<App> CommandRunner<App, QueryClientSubCommand> for RunQueryClientSubCommand
21where
22    App: CanRunCommand<QueryClientStateArgs>
23        + CanRunCommand<QueryClientStatusArgs>
24        + CanRunCommand<QueryConsensusStateArgs>,
25{
26    async fn run_command(
27        app: &App,
28        subcommand: &QueryClientSubCommand,
29    ) -> Result<App::Output, App::Error> {
30        match subcommand {
31            QueryClientSubCommand::State(args) => app.run_command(args).await,
32            QueryClientSubCommand::Status(args) => app.run_command(args).await,
33            QueryClientSubCommand::Consensus(args) => app.run_command(args).await,
34        }
35    }
36}