Skip to content

Commit 7efe21a

Browse files
committed
fix: workspace member with fixed version key
1 parent d5c90a1 commit 7efe21a

1 file changed

Lines changed: 34 additions & 0 deletions

File tree

commitizen/providers/cargo_provider.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,41 @@ def set_lock_version(self, version: str) -> None:
7979
cargo_lock_content["package"][i]["version"] = version # type: ignore[index]
8080
break
8181
except NonExistentKey:
82+
<<<<<<< HEAD
8283
members_inheriting = _get_workspace_members(cargo_toml_content, self._get_encoding())
84+
=======
85+
workspace = cargo_toml_content.get("workspace", {})
86+
if TYPE_CHECKING:
87+
assert isinstance(workspace, dict)
88+
workspace_members = workspace.get("members", [])
89+
excluded_workspace_members = workspace.get("exclude", [])
90+
members_inheriting: list[str] = []
91+
92+
for member in workspace_members:
93+
for path in glob.glob(member, recursive=True):
94+
if any(
95+
fnmatch.fnmatch(path, pattern)
96+
for pattern in excluded_workspace_members
97+
):
98+
continue
99+
100+
cargo_file = Path(path) / "Cargo.toml"
101+
package_content = parse(
102+
cargo_file.read_text(encoding=self._get_encoding())
103+
).get("package", {})
104+
if TYPE_CHECKING:
105+
assert isinstance(package_content, dict)
106+
try:
107+
if not isinstance(package_content["version"], str):
108+
version_workspace = package_content["version"]["workspace"]
109+
if version_workspace is True:
110+
package_name = package_content["name"]
111+
if TYPE_CHECKING:
112+
assert isinstance(package_name, str)
113+
members_inheriting.append(package_name)
114+
except NonExistentKey:
115+
pass
116+
>>>>>>> e74d2d46 (fix: workspace member with fixed version key)
83117

84118
for i, package in enumerate(packages):
85119
if package["name"] in members_inheriting:

0 commit comments

Comments
 (0)