diff options
Diffstat (limited to 'src/rust.rs')
-rw-r--r-- | src/rust.rs | 54 |
1 files changed, 37 insertions, 17 deletions
diff --git a/src/rust.rs b/src/rust.rs index 192c387..56778b1 100644 --- a/src/rust.rs +++ b/src/rust.rs @@ -27,10 +27,15 @@ impl Rust { self.cargo_toml.set_version(version)?; self.cargo_toml.write()?; + let dirname = self + .dirname + .canonicalize() + .map_err(|err| BumperError::AbsPath(self.dirname.to_path_buf(), err))?; + info!( "Rust project {}, in {}, version set to {}", - self.dirname.display(), - "xxx", + self.cargo_toml.name()?, + dirname.display(), version ); Ok(()) @@ -53,6 +58,36 @@ impl CargoToml { }) } + fn get_package_table(&mut self) -> Result<&mut toml_edit::Table, BumperError> { + let package = self + .manifest + .get_table(&["package".to_string()]) + .map_err(BumperError::NoPackage)?; + if let Some(table) = package.as_table_mut() { + Ok(table) + } else { + Err(BumperError::ProjectNotTable) + } + } + + fn name(&mut self) -> Result<String, BumperError> { + let package = self.get_package_table()?; + let v = package.entry("name"); + if let Some(name) = v.as_str() { + Ok(name.to_string()) + } else { + Err(BumperError::UnnamedProject) + } + } + + fn set_version(&mut self, version: &str) -> Result<(), BumperError> { + let package = self.get_package_table()?; + debug!("setting Cargo.toml set version to {} in memory", version); + let v = package.entry("version"); + *v = Item::Value(Value::from(version)); + Ok(()) + } + fn write(&self) -> Result<(), BumperError> { debug!("saving Cargo.toml to {}", self.dirname.display()); let mut file = Manifest::find_file(&Some(self.dirname.to_path_buf())) @@ -62,19 +97,4 @@ impl CargoToml { .map_err(|err| BumperError::WriteToml(self.dirname.to_path_buf(), err))?; Ok(()) } - - fn set_version(&mut self, version: &str) -> Result<(), BumperError> { - let package = self - .manifest - .get_table(&["package".to_string()]) - .map_err(BumperError::NoPackage)?; - if let Some(package) = package.as_table_mut() { - debug!("setting Cargo.toml set version to {} in memory", version); - let v = package.entry("version"); - *v = Item::Value(Value::from(version)); - } else { - return Err(BumperError::ProjectNotTable); - } - Ok(()) - } } |