use std::io::{self, Write};
use crate::modules::{ModuleStatus, QCModule};
use crate::VERSION;
pub fn write_fastqc_data(modules: &[Box<dyn QCModule>], writer: &mut dyn Write) -> io::Result<()> {
writeln!(writer, "##FastQC\t{}", VERSION)?;
for module in modules {
if module.ignore_in_report() {
continue;
}
let status_str = match module.status() {
ModuleStatus::Pass => "pass",
ModuleStatus::Warn => "warn",
ModuleStatus::Fail => "fail",
};
writeln!(writer, ">>{}\t{}", module.name(), status_str)?;
module.write_text_report(writer)?;
writeln!(writer, ">>END_MODULE")?;
}
Ok(())
}
pub fn write_summary(
modules: &[Box<dyn QCModule>],
filename: &str,
writer: &mut dyn Write,
) -> io::Result<()> {
for module in modules {
if module.ignore_in_report() {
continue;
}
writeln!(
writer,
"{}\t{}\t{}",
module.status(),
module.name(),
filename
)?;
}
Ok(())
}