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}