use std::path::PathBuf;
use clap::{Args, Subcommand};
use super::ProfileArgs;
#[derive(Debug, Args)]
#[command(arg_required_else_help = true)]
pub(crate) struct BenchArgs {
#[command(subcommand)]
pub command: Option<BenchCommand>,
pub file: Option<String>,
#[arg(short = 'n', long, default_value_t = 10)]
pub iterations: usize,
#[command(flatten)]
pub profile: ProfileArgs,
}
#[derive(Debug, Subcommand)]
pub(crate) enum BenchCommand {
Replay(BenchReplayArgs),
}
#[derive(Debug, Args)]
pub(crate) struct BenchReplayArgs {
pub selection: Option<PathBuf>,
#[arg(long)]
pub json: bool,
#[arg(long, value_name = "PATH")]
pub output: Option<PathBuf>,
#[arg(long, value_name = "TEXT")]
pub filter: Option<String>,
#[arg(
long = "suite-name",
default_value = "harn-canonical-replay-determinism"
)]
pub suite_name: String,
#[arg(long, value_name = "ADAPTER", requires_all = ["external_first", "external_second"])]
pub adapter: Option<String>,
#[arg(long = "external-first", value_name = "PATH", requires = "adapter")]
pub external_first: Option<PathBuf>,
#[arg(long = "external-second", value_name = "PATH", requires = "adapter")]
pub external_second: Option<PathBuf>,
#[arg(long = "external-name", default_value = "external-adapted-replay")]
pub external_name: String,
}