#[path = "common/mod.rs"]
#[allow(dead_code)]
mod common;
use anyhow::Result;
use clap::Parser;
use common::SeqSum;
use paraseq::{fastx, prelude::*};
#[derive(Parser)]
struct Cli {
input: Option<String>,
#[clap(short, long, default_value_t = 0)]
start: usize,
#[clap(short, long)]
end: Option<usize>,
#[clap(short = 'T', long, default_value_t = 0)]
threads: usize,
}
fn main() -> Result<()> {
let args = Cli::parse();
let reader = fastx::Reader::from_optional_path(args.input)?;
let mut processor = SeqSum::default();
match args.end {
Some(end) => {
reader.process_parallel_range(&mut processor, args.threads, args.start..end)?
}
None => reader.process_parallel_range(&mut processor, args.threads, args.start..)?,
}
processor.report();
Ok(())
}