use clap::Parser;
use readmerger::{
build_merge_tree, find_fastqs, prepare_for_merges, publish_final_fastq, traverse_tree,
};
use std::io;
#[derive(Parser)]
struct Cli {
#[clap(value_enum)]
readdir: String,
output_name: String,
}
fn main() -> io::Result<()> {
let args = Cli::parse();
let input_dir = args.readdir;
let output_path = args.output_name;
let fastq_files = find_fastqs(&input_dir)
.expect("Failed to find any FASTQ files in the provided search directory.");
let prepped_files = prepare_for_merges(fastq_files, &input_dir).expect(
"FASTQ files could not be read. Please check to make sure they are uncompressed, \
gzip-compressed, or zstd-compressed.",
);
let merge_tree = build_merge_tree(&prepped_files, None)?;
println!("\n\nMerge tree constructed:\n\n{:#?}\n\n", merge_tree);
traverse_tree(&merge_tree).expect("Merge tree could not be traversed.");
let final_result = publish_final_fastq(&input_dir, &output_path);
match final_result {
Ok(_) => println!("Readmerger completed successfully."),
Err(message) => panic!("Readmerger encountered this error:\n{}", message),
}
Ok(())
}