reth_cli_commands/recover/
mod.rs

1//! `reth recover` command.
2
3use crate::common::CliNodeTypes;
4use clap::{Parser, Subcommand};
5use reth_chainspec::{EthChainSpec, EthereumHardforks};
6use reth_cli::chainspec::ChainSpecParser;
7use reth_cli_runner::CliContext;
8
9mod storage_tries;
10
11/// `reth recover` command
12#[derive(Debug, Parser)]
13pub struct Command<C: ChainSpecParser> {
14    #[command(subcommand)]
15    command: Subcommands<C>,
16}
17
18/// `reth recover` subcommands
19#[derive(Subcommand, Debug)]
20pub enum Subcommands<C: ChainSpecParser> {
21    /// Recover the node by deleting dangling storage tries.
22    StorageTries(storage_tries::Command<C>),
23}
24
25impl<C: ChainSpecParser<ChainSpec: EthChainSpec + EthereumHardforks>> Command<C> {
26    /// Execute `recover` command
27    pub async fn execute<N: CliNodeTypes<ChainSpec = C::ChainSpec>>(
28        self,
29        ctx: CliContext,
30    ) -> eyre::Result<()> {
31        match self.command {
32            Subcommands::StorageTries(command) => command.execute::<N>(ctx).await,
33        }
34    }
35}