2021-09-28 17:59:55 +08:00
|
|
|
use std::fs::File;
|
2021-03-23 02:19:37 +08:00
|
|
|
use std::io::Write;
|
2020-12-12 20:32:06 +08:00
|
|
|
use std::path::Path;
|
2021-03-23 02:19:37 +08:00
|
|
|
|
2021-09-28 17:59:55 +08:00
|
|
|
use flate2::{write::GzEncoder, Compression};
|
|
|
|
use tar::Builder;
|
2020-12-12 20:32:06 +08:00
|
|
|
|
2021-03-23 23:37:46 +08:00
|
|
|
pub fn to_tar_gz(src: impl AsRef<Path>, dest: impl AsRef<Path>) -> anyhow::Result<()> {
|
2021-03-23 02:19:37 +08:00
|
|
|
let mut f = File::create(dest)?;
|
|
|
|
let gz_encoder = GzEncoder::new(&mut f, Compression::default());
|
2020-12-12 20:32:06 +08:00
|
|
|
let mut tar_encoder = Builder::new(gz_encoder);
|
|
|
|
tar_encoder.append_dir_all(".", src)?;
|
|
|
|
let gz_encoder = tar_encoder.into_inner()?;
|
|
|
|
gz_encoder.finish()?;
|
2021-03-23 02:19:37 +08:00
|
|
|
f.flush()?;
|
2020-12-12 20:32:06 +08:00
|
|
|
Ok(())
|
|
|
|
}
|
|
|
|
|
2021-09-27 22:48:03 +08:00
|
|
|
//pub fn from_tar_gz(src: impl AsRef<Path>, dest: impl AsRef<Path>) -> anyhow::Result<()> {
|
2021-09-29 04:22:59 +08:00
|
|
|
//let f = File::open(&src)?;
|
|
|
|
//let gz = GzDecoder::new(f);
|
|
|
|
//let mut ar = Archive::new(gz);
|
|
|
|
//create_dir_all(&dest)?;
|
|
|
|
//ar.unpack(&dest)?;
|
|
|
|
//Ok(())
|
2021-09-27 22:48:03 +08:00
|
|
|
//}
|