use std::fs::File; use std::io::Write; use std::path::Path; use flate2::{write::GzEncoder, Compression}; use tar::Builder; pub fn to_tar_gz(src: impl AsRef, dest: impl AsRef) -> anyhow::Result<()> { let mut f = File::create(dest)?; let gz_encoder = GzEncoder::new(&mut f, Compression::default()); let mut tar_encoder = Builder::new(gz_encoder); tar_encoder.append_dir_all(".", src)?; let gz_encoder = tar_encoder.into_inner()?; gz_encoder.finish()?; f.flush()?; Ok(()) } //pub fn from_tar_gz(src: impl AsRef, dest: impl AsRef) -> anyhow::Result<()> { //let f = File::open(&src)?; //let gz = GzDecoder::new(f); //let mut ar = Archive::new(gz); //create_dir_all(&dest)?; //ar.unpack(&dest)?; //Ok(()) //}