1use clap::{Parser, Subcommand};
4use reth_cli_runner::CliContext;
5use reth_node_core::args::LogArgs;
6use reth_tracing::FileWorkerGuard;
7
8mod context;
9mod new_payload_fcu;
10mod new_payload_only;
11mod output;
12
13#[derive(Debug, Parser)]
15pub struct BenchmarkCommand {
16 #[command(subcommand)]
17 command: Subcommands,
18
19 #[command(flatten)]
20 logs: LogArgs,
21}
22
23#[derive(Subcommand, Debug)]
25pub enum Subcommands {
26 NewPayloadFcu(new_payload_fcu::Command),
28
29 NewPayloadOnly(new_payload_only::Command),
31}
32
33impl BenchmarkCommand {
34 pub async fn execute(self, ctx: CliContext) -> eyre::Result<()> {
36 let _guard = self.init_tracing()?;
38
39 match self.command {
40 Subcommands::NewPayloadFcu(command) => command.execute(ctx).await,
41 Subcommands::NewPayloadOnly(command) => command.execute(ctx).await,
42 }
43 }
44
45 pub fn init_tracing(&self) -> eyre::Result<Option<FileWorkerGuard>> {
50 let guard = self.logs.init_tracing()?;
51 Ok(guard)
52 }
53}