Skip to content

Commit

Permalink
Add support for generating the changelog content
Browse files Browse the repository at this point in the history
  • Loading branch information
Nicoretti committed Mar 11, 2024
1 parent 6ed6c31 commit d29cf66
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 1 deletion.
29 changes: 29 additions & 0 deletions exasol/toolbox/release/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
from datetime import datetime
import subprocess
from inspect import cleandoc
from dataclasses import dataclass
from functools import total_ordering
from shutil import which
Expand Down Expand Up @@ -62,3 +64,30 @@ def from_poetry():
version = result.stdout.decode().strip()

return Version.from_string(version)


def changelog(version : Version, content: str, date: datetime | None = None) -> str:
"""
Create a changelog entry for a specific version.
Args:
version: An instance of the Version class representing the release version.
content: The content of the changelog entry.
date: Optional. The release date. If not provided, the current date will be used.
Returns:
The generated changelog.
"""
date = datetime.today() if date is None else date
template = cleandoc(
"""
# {version} - {date}
{content}
"""
)
return template.format(
version=version,
date=date.strftime('%Y-%m-%d'),
content=content
)
41 changes: 40 additions & 1 deletion test/unit/release_test.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
import subprocess
from datetime import datetime
from inspect import cleandoc
from unittest.mock import patch

import pytest

from exasol.toolbox.release import Version
from exasol.toolbox.release import (
Version,
changelog,
)


@pytest.mark.parametrize(
Expand Down Expand Up @@ -61,3 +66,37 @@ def test_version_from_poetry(poetry_version, version, expected):
actual = Version.from_poetry()

assert expected == actual


@pytest.mark.parametrize(
"version,content,date,expected",
[
(
Version(0, 1, 0),
cleandoc(
"""
## Added
* Some great feature
## Refactored
* Replaced xyz
"""
),
datetime(2024, 2, 7),
cleandoc(
"""
# 0.1.0 - 2024-02-07
## Added
* Some great feature
## Refactored
* Replaced xyz
"""
),
),
],
)
def test_changelog(version, content, date, expected):
actual = changelog(version, content, date)
assert expected == actual

0 comments on commit d29cf66

Please sign in to comment.