summaryrefslogtreecommitdiff
path: root/src/client.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/client.rs')
-rw-r--r--src/client.rs26
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)