reth_cli_commands/recover/
mod.rs
1use crate::common::CliNodeTypes;
4use clap::{Parser, Subcommand};
5use reth_chainspec::{EthChainSpec, EthereumHardforks};
6use reth_cli::chainspec::ChainSpecParser;
7use reth_cli_runner::CliContext;
8use std::sync::Arc;
9
10mod storage_tries;
11
12#[derive(Debug, Parser)]
14pub struct Command<C: ChainSpecParser> {
15 #[command(subcommand)]
16 command: Subcommands<C>,
17}
18
19#[derive(Subcommand, Debug)]
21pub enum Subcommands<C: ChainSpecParser> {
22 StorageTries(storage_tries::Command<C>),
24}
25
26impl<C: ChainSpecParser<ChainSpec: EthChainSpec + EthereumHardforks>> Command<C> {
27 pub async fn execute<N: CliNodeTypes<ChainSpec = C::ChainSpec>>(
29 self,
30 ctx: CliContext,
31 ) -> eyre::Result<()> {
32 match self.command {
33 Subcommands::StorageTries(command) => command.execute::<N>(ctx).await,
34 }
35 }
36}
37
38impl<C: ChainSpecParser> Command<C> {
39 pub fn chain_spec(&self) -> Option<&Arc<C::ChainSpec>> {
41 match &self.command {
42 Subcommands::StorageTries(command) => command.chain_spec(),
43 }
44 }
45}