use std::path::PathBuf;
use clap::{Args, ValueEnum};
use crate::cli::limits::LimitArg;
use crate::cli::sampling::SampleMode;
#[derive(Debug, Clone, Copy, PartialEq, Eq, ValueEnum, Default)]
#[value(rename_all = "kebab-case")]
pub enum CaptureMode {
Match,
#[default]
Switch,
Assert,
Deassert,
}
#[derive(Debug, Args)]
pub struct PropertyArgs {
#[arg(long, value_name = "FILE", help_heading = "Input options")]
pub waves: PathBuf,
#[arg(long, help_heading = "Selection options")]
pub from: Option<String>,
#[arg(long, help_heading = "Selection options")]
pub to: Option<String>,
#[arg(long, help_heading = "Selection options")]
pub scope: Option<String>,
#[arg(long, required = true, help_heading = "Selection options")]
pub on: String,
#[arg(
long,
value_enum,
default_value_t = SampleMode::PreEdge,
value_name = "MODE",
help_heading = "Selection options"
)]
pub sample_mode: SampleMode,
#[arg(long, help_heading = "Selection options")]
pub eval: String,
#[arg(
long,
value_enum,
default_value_t = CaptureMode::Switch,
value_name = "MODE",
help_heading = "Output options"
)]
pub capture: CaptureMode,
#[arg(long, default_value = "50", help_heading = "Output options")]
pub max: LimitArg,
#[arg(long, help_heading = "Output options")]
pub json: bool,
#[arg(long, conflicts_with = "json", help_heading = "Output options")]
pub jsonl: bool,
}