summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2021-03-30 09:20:29 +0300
committerLars Wirzenius <liw@liw.fi>2021-03-30 12:04:20 +0300
commitdc0f531545a255fb4543e0d0697e318efc9cf791 (patch)
treeaab56c799f6ffc4e76fbc6eff180f23918343366
parente139b4f8f89ebc718947542949f891415c423ef7 (diff)
downloadbumper-rs-dc0f531545a255fb4543e0d0697e318efc9cf791.tar.gz
fix: report project name and location when setting version for Rust
-rw-r--r--src/errors.rs3
-rw-r--r--src/rust.rs47
2 files changed, 34 insertions, 16 deletions
diff --git a/src/errors.rs b/src/errors.rs
index 282b5c5..0652adf 100644
--- a/src/errors.rs
+++ b/src/errors.rs
@@ -26,6 +26,9 @@ pub enum BumperError {
#[error("'project' in Cargo.toml is not a table")]
ProjectNotTable,
+ #[error("Cargo.toml doesn't specify a package name")]
+ UnnamedProject,
+
#[error("Failed to run git: {0}")]
GitInvoke(#[source] std::io::Error),
diff --git a/src/rust.rs b/src/rust.rs
index 192c387..848422c 100644
--- a/src/rust.rs
+++ b/src/rust.rs
@@ -29,8 +29,8 @@ impl Rust {
info!(
"Rust project {}, in {}, version set to {}",
+ self.cargo_toml.name()?,
self.dirname.display(),
- "xxx",
version
);
Ok(())
@@ -53,6 +53,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 +92,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(())
- }
}