Adding upstream version 4.7.0.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
bdd390b4cf
commit
9277c2e8ea
7 changed files with 115 additions and 9 deletions
|
@ -48,7 +48,7 @@ repos:
|
|||
- tomli
|
||||
|
||||
- repo: https://github.com/commitizen-tools/commitizen
|
||||
rev: v4.6.3 # automatically updated by Commitizen
|
||||
rev: v4.7.0 # automatically updated by Commitizen
|
||||
hooks:
|
||||
- id: commitizen
|
||||
- id: commitizen-branch
|
||||
|
|
10
CHANGELOG.md
10
CHANGELOG.md
|
@ -1,3 +1,13 @@
|
|||
## v4.7.0 (2025-05-10)
|
||||
|
||||
### Feat
|
||||
|
||||
- **providers**: add support for `Cargo.lock`
|
||||
|
||||
### Refactor
|
||||
|
||||
- **tests**: increase verbosity of variables
|
||||
|
||||
## v4.6.3 (2025-05-07)
|
||||
|
||||
### Fix
|
||||
|
|
|
@ -1 +1 @@
|
|||
__version__ = "4.6.3"
|
||||
__version__ = "4.7.0"
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
import tomlkit
|
||||
|
||||
from commitizen.providers.base_provider import TomlProvider
|
||||
|
@ -13,6 +15,11 @@ class CargoProvider(TomlProvider):
|
|||
"""
|
||||
|
||||
filename = "Cargo.toml"
|
||||
lock_filename = "Cargo.lock"
|
||||
|
||||
@property
|
||||
def lock_file(self) -> Path:
|
||||
return Path() / self.lock_filename
|
||||
|
||||
def get(self, document: tomlkit.TOMLDocument) -> str:
|
||||
try:
|
||||
|
@ -28,3 +35,23 @@ class CargoProvider(TomlProvider):
|
|||
except tomlkit.exceptions.NonExistentKey:
|
||||
...
|
||||
document["package"]["version"] = version # type: ignore
|
||||
|
||||
def set_version(self, version: str) -> None:
|
||||
super().set_version(version)
|
||||
if self.lock_file.exists():
|
||||
self.set_lock_version(version)
|
||||
|
||||
def set_lock_version(self, version: str) -> None:
|
||||
cargo_toml_content = tomlkit.parse(self.file.read_text())
|
||||
try:
|
||||
package_name = cargo_toml_content["package"]["name"] # type: ignore
|
||||
except tomlkit.exceptions.NonExistentKey:
|
||||
package_name = cargo_toml_content["workspace"]["package"]["name"] # type: ignore
|
||||
|
||||
cargo_lock_content = tomlkit.parse(self.lock_file.read_text())
|
||||
packages: tomlkit.items.AoT = cargo_lock_content["package"] # type: ignore[assignment]
|
||||
for i, package in enumerate(packages):
|
||||
if package["name"] == package_name:
|
||||
cargo_lock_content["package"][i]["version"] = version # type: ignore[index]
|
||||
break
|
||||
self.lock_file.write_text(tomlkit.dumps(cargo_lock_content))
|
||||
|
|
|
@ -353,7 +353,7 @@ Commitizen provides some version providers for some well known formats:
|
|||
| `pep621` | Get and set version from `pyproject.toml` `project.version` field |
|
||||
| `poetry` | Get and set version from `pyproject.toml` `tool.poetry.version` field |
|
||||
| `uv` | Get and set version from `pyproject.toml` `project.version` field and `uv.lock` `package.version` field whose `package.name` field is the same as `pyproject.toml` `project.name` field |
|
||||
| `cargo` | Get and set version from `Cargo.toml` `project.version` field |
|
||||
| `cargo` | Get and set version from `Cargo.toml` `package.version` field and `Cargo.lock` `package.version` field whose `package.name` field is the same as `Cargo.toml` `package.name` field |
|
||||
| `npm` | Get and set version from `package.json` `version` field, `package-lock.json` `version,packages.''.version` fields if the file exists, and `npm-shrinkwrap.json` `version,packages.''.version` fields if the file exists |
|
||||
| `composer` | Get and set version from `composer.json` `project.version` field |
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[project]
|
||||
name = "commitizen"
|
||||
version = "4.6.3"
|
||||
version = "4.7.0"
|
||||
description = "Python commitizen client tool"
|
||||
authors = [{ name = "Santiago Fraire", email = "santiwilly@gmail.com" }]
|
||||
maintainers = [
|
||||
|
@ -88,7 +88,7 @@ build-backend = "poetry.core.masonry.api"
|
|||
|
||||
|
||||
[tool.commitizen]
|
||||
version = "4.6.3"
|
||||
version = "4.7.0"
|
||||
tag_format = "v$version"
|
||||
version_files = [
|
||||
"pyproject.toml:version",
|
||||
|
|
|
@ -15,7 +15,7 @@ name = "whatever"
|
|||
version = "0.1.0"
|
||||
"""
|
||||
|
||||
CARGO_EXPECTED = """\
|
||||
CARGO_TOML_EXPECTED = """\
|
||||
[package]
|
||||
name = "whatever"
|
||||
version = "42.1"
|
||||
|
@ -27,18 +27,44 @@ name = "whatever"
|
|||
version = "0.1.0"
|
||||
"""
|
||||
|
||||
CARGO_WORKSPACE_EXPECTED = """\
|
||||
CARGO_WORKSPACE_TOML_EXPECTED = """\
|
||||
[workspace.package]
|
||||
name = "whatever"
|
||||
version = "42.1"
|
||||
"""
|
||||
|
||||
CARGO_LOCK = """\
|
||||
[[package]]
|
||||
name = "whatever"
|
||||
version = "0.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "123abc"
|
||||
dependencies = [
|
||||
"packageA",
|
||||
"packageB",
|
||||
"packageC",
|
||||
]
|
||||
"""
|
||||
|
||||
CARGO_LOCK_EXPECTED = """\
|
||||
[[package]]
|
||||
name = "whatever"
|
||||
version = "42.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "123abc"
|
||||
dependencies = [
|
||||
"packageA",
|
||||
"packageB",
|
||||
"packageC",
|
||||
]
|
||||
"""
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"content, expected",
|
||||
(
|
||||
(CARGO_TOML, CARGO_EXPECTED),
|
||||
(CARGO_WORKSPACE_TOML, CARGO_WORKSPACE_EXPECTED),
|
||||
(CARGO_TOML, CARGO_TOML_EXPECTED),
|
||||
(CARGO_WORKSPACE_TOML, CARGO_WORKSPACE_TOML_EXPECTED),
|
||||
),
|
||||
)
|
||||
def test_cargo_provider(
|
||||
|
@ -58,3 +84,46 @@ def test_cargo_provider(
|
|||
|
||||
provider.set_version("42.1")
|
||||
assert file.read_text() == dedent(expected)
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"toml_content, lock_content, toml_expected, lock_expected",
|
||||
(
|
||||
(
|
||||
CARGO_TOML,
|
||||
CARGO_LOCK,
|
||||
CARGO_TOML_EXPECTED,
|
||||
CARGO_LOCK_EXPECTED,
|
||||
),
|
||||
(
|
||||
CARGO_WORKSPACE_TOML,
|
||||
CARGO_LOCK,
|
||||
CARGO_WORKSPACE_TOML_EXPECTED,
|
||||
CARGO_LOCK_EXPECTED,
|
||||
),
|
||||
),
|
||||
)
|
||||
def test_cargo_provider_with_lock(
|
||||
config: BaseConfig,
|
||||
chdir: Path,
|
||||
toml_content: str,
|
||||
lock_content: str,
|
||||
toml_expected: str,
|
||||
lock_expected: str,
|
||||
):
|
||||
filename = CargoProvider.filename
|
||||
file = chdir / filename
|
||||
file.write_text(dedent(toml_content))
|
||||
|
||||
lock_filename = CargoProvider.lock_filename
|
||||
lock_file = chdir / lock_filename
|
||||
lock_file.write_text(dedent(lock_content))
|
||||
config.settings["version_provider"] = "cargo"
|
||||
|
||||
provider = get_provider(config)
|
||||
assert isinstance(provider, CargoProvider)
|
||||
assert provider.get_version() == "0.1.0"
|
||||
|
||||
provider.set_version("42.1")
|
||||
assert file.read_text() == dedent(toml_expected)
|
||||
assert lock_file.read_text() == dedent(lock_expected)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue