diff --git a/src/archive.rs b/src/archive.rs index 4352d7a..fdcebb6 100644 --- a/src/archive.rs +++ b/src/archive.rs @@ -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(()) +} diff --git a/src/bin/vento.rs b/src/bin/vento.rs index 61ece31..e7290f8 100644 --- a/src/bin/vento.rs +++ b/src/bin/vento.rs @@ -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], "")?,