diff options
author | Lars Wirzenius <liw@liw.fi> | 2021-04-05 08:48:46 +0000 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2021-04-05 08:48:46 +0000 |
commit | 079357cc06488433afd1feac6ca41d859fbdee00 (patch) | |
tree | 9b3e746ba6d523c080f0f40b5c0798f7e9326da5 /src/rust.rs | |
parent | 62e5bf8eca44deec7f45bb697ee98298b8abd219 (diff) | |
parent | 19cb8fcd22e9d2bc240cbd2b23efa2e19cf7ea52 (diff) | |
download | bumper-rs-079357cc06488433afd1feac6ca41d859fbdee00.tar.gz |
Merge branch 'cargo-lock-update' into 'main'
feat: update Cargo.lock int Rust projects
See merge request larswirzenius/bumper!10
Diffstat (limited to 'src/rust.rs')
-rw-r--r-- | src/rust.rs | 17 |
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)] |