archive: Add install exporting

This exports all contents in your vento directory into an xz tarball.
Needs documentation, but essentially it works using `vento -E`. Mind the
uppercase E there!
This commit is contained in:
Lux Aliaga 2023-02-17 13:37:51 -03:00
parent faf8036b19
commit c5cc1ea97a
Signed by: lux
GPG Key ID: B56C805968637437
2 changed files with 23 additions and 0 deletions

View File

@ -51,3 +51,21 @@ pub fn export_inv(slot: &str, output: PathBuf, message: bool) -> Result<()> {
};
Ok(())
}
pub fn export_install(output: PathBuf, message: bool) -> Result<()> {
let dir: PathBuf = common::env_config()?.vento_dir;
let archive = File::create(&output)?;
let enc = XzEncoder::new(archive, 9);
let mut tar = tar::Builder::new(enc);
tar.append_dir_all("", dir)?;
if message {
println!(
"✅ {} {}",
"Exported Vento install into".green(),
&output.to_str().unwrap()
);
};
Ok(())
}

View File

@ -60,6 +60,11 @@ fn main() -> Result<()> {
2 => archive::export_inv("active", PathBuf::from("active.tar.xz"), true)?,
_ => throw_error(ErrorType::TooManyArgs)?,
},
"-E" | "--export-install" => match args.len() {
3 => archive::export_install(PathBuf::from(&args[2]), true)?,
2 => archive::export_install(PathBuf::from("vento.tar.xz"), true)?,
_ => throw_error(ErrorType::TooManyArgs)?,
},
"-s" => match args.len() {
4 => inv::list(&args[2], &args[3])?,
3 => inv::list(&args[2], "")?,