summaryrefslogtreecommitdiff
path: root/src/rust.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/rust.rs')
-rw-r--r--src/rust.rs17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/rust.rs b/src/rust.rs
index 56778b1..10dc1a1 100644
--- a/src/rust.rs
+++ b/src/rust.rs
@@ -2,6 +2,7 @@ use crate::errors::BumperError;
use cargo_edit::Manifest;
use log::{debug, info};
use std::path::{Path, PathBuf};
+use std::process::Command;
use toml_edit::{Item, Value};
pub struct Rust {
@@ -26,6 +27,7 @@ impl Rust {
// debug!("Cargo.toml:\n{:#?}", self.cargo_toml);
self.cargo_toml.set_version(version)?;
self.cargo_toml.write()?;
+ self.update_cargo_lock()?;
let dirname = self
.dirname
@@ -40,6 +42,21 @@ impl Rust {
);
Ok(())
}
+
+ fn update_cargo_lock(&self) -> Result<(), BumperError> {
+ info!("running cargo update in {}", self.dirname.display());
+ let output = Command::new("cargo")
+ .arg("update")
+ .current_dir(&self.dirname)
+ .output()
+ .map_err(|err| BumperError::CargoInvoke(self.dirname.to_path_buf(), err))?;
+ debug!("git exit code was {:?}", output.status.code());
+ if !output.status.success() {
+ let stderr = String::from_utf8_lossy(&output.stderr).into_owned();
+ return Err(BumperError::Cargo(self.dirname.to_path_buf(), stderr));
+ }
+ Ok(())
+ }
}
#[derive(Debug)]