Skip to content

Commit 22e0530

Browse files
authored
Support workspace.package.version in Cargo.toml (#1504)
Closes #1491 Co-authored-by: Dylan Anthony <dbanty@users.noreply.github.com>
1 parent f159c6f commit 22e0530

45 files changed

Lines changed: 198 additions & 20 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 6 additions & 0 deletions

crates/knope-versioning/src/versioned_file/cargo.rs

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,15 @@ impl Cargo {
3535
self.document
3636
.get("package")
3737
.and_then(|package| package.get("version")?.as_str())
38+
.or_else(|| {
39+
self.document
40+
.get("workspace")?
41+
.get("package")?
42+
.get("version")?
43+
.as_str()
44+
})
3845
.ok_or_else(|| Error::MissingRequiredProperties {
39-
property: "package.version",
46+
property: "`package.version` or `workspace.package.version`",
4047
path: self.path.clone(),
4148
})?
4249
.parse()
@@ -69,11 +76,19 @@ impl Cargo {
6976
}
7077
format!("{dependency}.version = {new_version}")
7178
} else {
72-
let version = self
79+
if let Some(version) = self
7380
.document
7481
.get_mut("package")
75-
.and_then(|package| package.get_mut("version"));
76-
if let Some(version) = version {
82+
.and_then(|package| package.get_mut("version"))
83+
&& version.is_str()
84+
// Skip package.version.workspace = true
85+
{
86+
*version = value(new_version.to_string());
87+
} else if let Some(version) = self
88+
.document
89+
.get_mut("workspace")
90+
.and_then(|ws| ws.get_mut("package")?.get_mut("version"))
91+
{
7792
*version = value(new_version.to_string());
7893
}
7994
format!("version = {new_version}")
@@ -126,7 +141,7 @@ mod test_contains_dependency {
126141
[package]
127142
name = "tester"
128143
version = "1.2.3-rc.0"
129-
144+
130145
[dependencies]
131146
knope-versioning = "0.1.0"
132147
"#;
@@ -141,7 +156,7 @@ mod test_contains_dependency {
141156
[package]
142157
name = "tester"
143158
version = "1.2.3-rc.0"
144-
159+
145160
[dependencies]
146161
knope-versioning = { version = "0.1.0" }
147162
"#;
@@ -156,7 +171,7 @@ mod test_contains_dependency {
156171
[package]
157172
name = "tester"
158173
version = "1.2.3-rc.0"
159-
174+
160175
[dependencies.knope-versioning]
161176
path = "../knope-versioning"
162177
version = "0.1.0"
@@ -172,7 +187,7 @@ mod test_contains_dependency {
172187
[package]
173188
name = "tester"
174189
version = "1.2.3-rc.0"
175-
190+
176191
[dev-dependencies]
177192
knope-versioning = "0.1.0"
178193
"#;
@@ -187,7 +202,7 @@ mod test_contains_dependency {
187202
[package]
188203
name = "tester"
189204
version = "1.2.3-rc.0"
190-
205+
191206
[workspace.dependencies]
192207
knope-versioning = "0.1.0"
193208
"#;

crates/knope/tests/prepare_release/cargo_toml_dependencies/dryrun_stdout.log renamed to crates/knope/tests/prepare_release/cargo/dependencies/dryrun_stdout.log

File renamed without changes.

crates/knope/tests/prepare_release/cargo_toml_dependencies/in/Cargo.toml renamed to crates/knope/tests/prepare_release/cargo/dependencies/in/Cargo.toml

File renamed without changes.

crates/knope/tests/prepare_release/cargo_toml_dependencies/in/knope.toml renamed to crates/knope/tests/prepare_release/cargo/dependencies/in/knope.toml

File renamed without changes.

crates/knope/tests/prepare_release/cargo_toml_dependencies/mod.rs renamed to crates/knope/tests/prepare_release/cargo/dependencies/mod.rs

File renamed without changes.

crates/knope/tests/prepare_release/cargo_toml_dependencies/out/Cargo.toml renamed to crates/knope/tests/prepare_release/cargo/dependencies/out/Cargo.toml

File renamed without changes.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
mod dependencies;
2+
mod workspace;

crates/knope/tests/prepare_release/cargo_workspace/full/dryrun_stdout.log renamed to crates/knope/tests/prepare_release/cargo/workspace/full/dryrun_stdout.log

File renamed without changes.

crates/knope/tests/prepare_release/cargo_workspace/full/in/Cargo.lock renamed to crates/knope/tests/prepare_release/cargo/workspace/full/in/Cargo.lock

File renamed without changes.

0 commit comments

Comments
 (0)