use clap::{Args, Parser, Subcommand};
#[derive(Parser, Debug)]
#[command(version, about, long_about = None)]
pub struct CliArgs {
#[command(subcommand)]
pub commands: Commands,
#[arg(short = 'i')]
pub bam_file: String,
#[arg(default_value = ".")]
pub output_dir: String,
#[arg(long, short = 'w', default_value_t = 0)]
pub workers: usize,
}
#[derive(Subcommand, Debug, Clone)]
pub enum Commands {
RawBam(RawBamArgs),
AlignedBam(AlignedBamArgs),
}
#[derive(Debug, Args, Clone)]
pub struct RawBamArgs {
#[arg(long = "length-min")]
pub length_min: Option<usize>,
#[arg(long = "length-max")]
pub length_max: Option<usize>,
#[arg(long = "slice-n", default_value_t = 0)]
pub slice_n: usize,
}
#[derive(Debug, Args, Clone)]
pub struct AlignedBamArgs {
#[arg(long = "ref-range")]
pub ref_range: Option<String>,
}