hermes_cli/impls/
build.rs1use hermes_cli_components::traits::build::{BuilderLoader, HasBuilderType};
2use hermes_cli_components::traits::config::load_config::CanLoadConfig;
3use hermes_cli_components::traits::types::config::HasConfigType;
4use hermes_cosmos_relayer::contexts::build::CosmosBuilder;
5use hermes_runtime::types::runtime::HermesRuntime;
6use hermes_runtime_components::traits::runtime::HasRuntime;
7use ibc_relayer::config::{ChainConfig, Config};
8
9pub struct LoadCosmosBuilder;
10
11impl<App> BuilderLoader<App> for LoadCosmosBuilder
12where
13 App: HasBuilderType<Builder = CosmosBuilder>
14 + HasConfigType<Config = Config>
15 + HasRuntime<Runtime = HermesRuntime>
16 + CanLoadConfig,
17{
18 async fn load_builder(app: &App) -> Result<App::Builder, App::Error> {
19 let runtime = app.runtime().clone();
20 let config = app.load_config().await?;
21
22 let chain_configs = config
23 .chains
24 .into_iter()
25 .map(|config| {
26 let ChainConfig::CosmosSdk(config) = config;
27 config
28 })
29 .collect();
30
31 let builder = CosmosBuilder::new(
32 chain_configs,
33 runtime,
34 Default::default(),
35 Default::default(),
36 Default::default(),
37 Default::default(),
38 );
39
40 Ok(builder)
41 }
42}