X-Git-Url: https://git.r.bdr.sh/rbdr/blog/blobdiff_plain/6352ebb0eb4cb83240c6d4998e0ef1375b041191..b17907faf8d9693cef94a6048d802bd4ced9102f:/src/command/publish_archive.rs diff --git a/src/command/publish_archive.rs b/src/command/publish_archive.rs index 075421f..96dda86 100644 --- a/src/command/publish_archive.rs +++ b/src/command/publish_archive.rs @@ -1,5 +1,5 @@ -use std::io::Result; use crate::configuration::Configuration; +use std::io::{Error, ErrorKind::Other, Result}; use std::process::{Command, Stdio}; const COMMAND: &str = "rsync"; @@ -17,27 +17,35 @@ impl super::Command for PublishArchive { vec![] } - fn execute(&self, input: Option<&String>, configuration: &Configuration, _: &String) -> Result<()> { - - let input = input.expect("You must provide a location to publish the archive"); + fn execute( + &self, + input: Option<&String>, + configuration: &Configuration, + _: &str, + ) -> Result<()> { + let input = input.ok_or_else(|| { + Error::new(Other, "You must provide a location to publish the archive") + })?; Command::new(COMMAND) .arg("--version") .stdout(Stdio::null()) .stderr(Stdio::null()) .status() - .expect("Publishing requires rsync"); - + .map_err(|_| Error::new(Other, "Publishing requires rsync"))?; Command::new(COMMAND) .arg("-r") - .arg(format!("{}/", &configuration.archive_output_directory.display())) + .arg(format!( + "{}/", + &configuration.archive_output_directory.display() + )) .arg(input.as_str()) .stdout(Stdio::null()) .stderr(Stdio::null()) .status() - .expect("Publishing requires rsync"); - return Ok(()) + .map_err(|_| Error::new(Other, "Rsync failed to publish."))?; + Ok(()) } fn after_dependencies(&self) -> Vec> {