use clap::{Parser, Subcommand};
use crussmap::{bed::cross_bed, log::init_logger, view::view_chain};
fn main() {
init_logger();
let cli = Cli::parse();
match &cli.command {
Commands::View {
csv,
input,
output,
rewrite,
} => view_chain(input, output, *csv, *rewrite),
Commands::Bed {
bed,
input,
output,
unmap,
rewrite,
} => cross_bed(bed, input, output, unmap, *rewrite),
}
}
#[derive(Parser)]
#[command(author, version, about, long_about = None)]
struct Cli {
#[command(subcommand)]
command: Commands,
}
#[derive(Subcommand)]
enum Commands {
View {
#[arg(short, long, required = false)]
input: Option<String>,
#[arg(short, long, required = false)]
output: Option<String>,
#[arg(short, long, default_value = "false", required = false)]
csv: bool,
#[arg(short, long, default_value = "false", required = false)]
rewrite: bool,
},
Bed {
#[arg(short, long)]
bed: String,
#[arg(short, long)]
input: Option<String>,
#[arg(short, long)]
output: Option<String>,
#[arg(short, long)]
unmap: Option<String>,
#[arg(short, long, default_value = "false")]
rewrite: bool,
},
}