use crate::compression::compress_bz2;
use std::ffi::OsStr;
use std::fs::{File, OpenOptions};
use std::io::Write;
use std::path::Path;
pub(crate) fn bytes_to_file<P: AsRef<Path>>(
bytes: Vec<u8>,
outfile: P,
bz2: bool,
) -> Result<(), std::io::Error> {
let compress_file: bool =
bz2 || matches!(outfile.as_ref().extension(), Some(ext) if ext == OsStr::new("bz2"));
let mut file: File = OpenOptions::new().append(true).create(true).open(outfile)?;
if compress_file {
write_bytes_bz2(bytes, &mut file)
} else {
file.write_all(&bytes)
}
}
pub(crate) fn write_bytes_bz2<W: Write>(
bytes: Vec<u8>,
writer: &mut W,
) -> Result<(), std::io::Error> {
let out_bytes: Vec<u8> = compress_bz2(&bytes)?;
writer.write_all(&out_bytes)
}