diff options
Diffstat (limited to 'src/client.rs')
-rw-r--r-- | src/client.rs | 26 |
1 files changed, 8 insertions, 18 deletions
diff --git a/src/client.rs b/src/client.rs index 97b4c61..dd2a624 100644 --- a/src/client.rs +++ b/src/client.rs @@ -18,6 +18,7 @@ pub enum ObnamClientError { #[derive(Debug)] pub struct ObnamClient { + binary: PathBuf, #[allow(dead_code)] tempdir: TempDir, #[allow(dead_code)] @@ -25,7 +26,11 @@ pub struct ObnamClient { } impl ObnamClient { - pub fn new(server_url: String, root: PathBuf) -> Result<Self, ObnamClientError> { + pub fn new( + client_binary: &Path, + server_url: String, + root: PathBuf, + ) -> Result<Self, ObnamClientError> { debug!("creating ObnamClient"); let tempdir = tempdir().map_err(ObnamClientError::TempDir)?; let config_filename = tempdir.path().join("client.yaml"); @@ -34,29 +39,14 @@ impl ObnamClient { config.write(&config_filename)?; Ok(Self { + binary: client_binary.to_path_buf(), tempdir, config: config_filename, }) } - pub fn version() -> Result<String, ObnamClientError> { - let output = Command::new("obnam") - .arg("--version") - .output() - .map_err(ObnamClientError::Run)?; - if output.status.code() != Some(0) { - eprintln!("{}", String::from_utf8_lossy(&output.stdout)); - eprintln!("{}", String::from_utf8_lossy(&output.stderr)); - std::process::exit(1); - } - - let v = String::from_utf8_lossy(&output.stdout); - let v = v.strip_suffix('\n').or(Some(&v)).unwrap().to_string(); - Ok(v) - } - pub fn run(&self, args: &[&str]) -> Result<String, ObnamClientError> { - let output = Command::new("obnam") + let output = Command::new(&self.binary) .arg("--config") .arg(&self.config) .args(args) |