use std::path::PathBuf;
use clap::{Args, ValueEnum};
use crate::cli::limits::LimitArg;
#[derive(Debug, Clone, Copy, PartialEq, Eq, ValueEnum, Default)]
#[value(rename_all = "kebab-case")]
pub enum TuneChangeEngineMode {
#[default]
Auto,
Baseline,
Fused,
EdgeFast,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, ValueEnum, Default)]
#[value(rename_all = "kebab-case")]
pub enum TuneChangeCandidateMode {
#[default]
Auto,
Random,
Stream,
}
#[derive(Debug, Args)]
pub struct ChangeArgs {
#[arg(long, value_name = "FILE")]
pub waves: PathBuf,
#[arg(long)]
pub from: Option<String>,
#[arg(long)]
pub to: Option<String>,
#[arg(long)]
pub scope: Option<String>,
#[arg(long, value_delimiter = ',', num_args = 1.., required = true)]
pub signals: Vec<String>,
#[arg(long)]
pub on: Option<String>,
#[arg(long, default_value = "50")]
pub max: LimitArg,
#[arg(long)]
pub abs: bool,
#[arg(long)]
pub json: bool,
#[arg(
long = "tune-engine",
value_enum,
default_value_t = TuneChangeEngineMode::Auto,
hide = true
)]
pub tune_engine: TuneChangeEngineMode,
#[arg(
long = "tune-candidates",
value_enum,
default_value_t = TuneChangeCandidateMode::Auto,
hide = true
)]
pub tune_candidates: TuneChangeCandidateMode,
#[arg(long = "tune-edge-fast-force", hide = true)]
pub tune_edge_fast_force: bool,
}