use clap::{Parser, Subcommand};
#[derive(Parser)]
#[command(author, version, about, long_about = None)]
pub struct Cli {
#[command(subcommand)]
pub command: Commands,
}
#[derive(clap::ValueEnum, Clone)]
pub enum ConvertFormat {
Yaml,
Json,
Csv,
}
#[derive(Subcommand)]
pub enum Commands {
Inspect {
path: String,
#[arg(short = 'n', long = "sample-name")]
name: Option<String>,
#[arg(long = "st-index")]
st_index: Option<String>,
#[arg(long = "sst-index")]
sst_index: Option<String>,
#[arg(long = "amendments", num_args = 1..)]
amendments: Option<Vec<String>>,
},
Validate {
path: String,
#[arg(short = 's', long = "schema")]
schema: String,
#[arg(short = 'n', long = "sample-name")]
sample_name: Option<String>,
#[arg(long = "st-index")]
st_index: Option<String>,
#[arg(long = "sst-index")]
sst_index: Option<String>,
#[arg(long = "amendments", num_args = 1..)]
amendments: Option<Vec<String>>,
},
Convert {
path: String,
#[arg(value_enum, short = 'f', long = "format")]
format: ConvertFormat,
#[arg(short = 'p', long = "path")]
output_path: Option<String>,
#[arg(long = "st-index")]
st_index: Option<String>,
#[arg(long = "sst-index")]
sst_index: Option<String>,
#[arg(long = "amendments", num_args = 1..)]
amendments: Option<Vec<String>>,
},
}