use std::error::Error;
use std::process;
use clap::{Arg, Command};
use rustynetics::bam::bam_import_genome;
fn get_genome(filename_in: &str, verbose: bool) -> Result<(), Box<dyn Error>> {
if verbose {
println!("Opening BAM file `{}`...", filename_in)
}
match bam_import_genome(filename_in) {
Ok(genome) => {
eprint!("{}", genome);
}
Err(err) => {
eprintln!("Error importing genome: {}", err);
process::exit(1);
}
}
Ok(())
}
fn main() {
let matches = Command::new("Get BAM Genome")
.version("1.0")
.author("Philipp Benner [https://github.com/pbenner]")
.about("Extract and print the genome information from a BAM file")
.arg(
Arg::new("input")
.help("The input BAM file")
.required(true)
.index(1),
)
.arg(
Arg::new("verbose")
.short('v')
.long("verbose")
.action(clap::ArgAction::SetTrue)
.help("Enable verbose output"),
)
.get_matches();
let filename_in = matches
.get_one::<String>("input")
.expect("Input file is required");
let verbose = matches.get_flag("verbose");
if let Err(e) = get_genome(filename_in, verbose) {
eprintln!("Error: {}", e);
process::exit(1);
}
}