use crate::diagnostics::Lint;
use clap::ArgAction::Append;
use clap::{Parser, ValueEnum};
#[derive(Debug, Default, Hash, Parser)]
#[command(rename_all = "kebab-case")]
pub struct SliceOptions {
#[arg(required = true)]
pub sources: Vec<String>,
#[arg(short = 'R', num_args = 1, action = Append, value_name = "REFERENCE")]
pub references: Vec<String>,
#[arg(short = 'D', num_args = 1, action = Append, value_name = "SYMBOL")]
pub defined_symbols: Vec<String>,
#[arg(short = 'A', long = "allow", num_args = 1, action = Append, value_name = "LINT_NAME", value_parser = Lint::ALLOWABLE_LINT_IDENTIFIERS, hide_possible_values = true, ignore_case = true)]
pub allowed_lints: Vec<String>,
#[arg(long)]
pub dry_run: bool,
#[arg(short = 'O', long, value_name = "DIRECTORY")]
pub output_dir: Option<String>,
#[arg(long, value_name = "FORMAT", value_enum, default_value_t = DiagnosticFormat::Human, ignore_case = true)]
pub diagnostic_format: DiagnosticFormat,
#[arg(long)]
pub disable_color: bool,
}
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash, ValueEnum)]
pub enum DiagnosticFormat {
#[default]
Human,
Json,
}