Skip to content

Commit 234eb5b

Browse files
authored
New Command: Force version on update (#107)
1 parent fce6b38 commit 234eb5b

5 files changed

Lines changed: 67 additions & 3 deletions

File tree

CHANGELOG.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@ The [Changelogger tool](https://pypi.org/project/changelogged) is used for autom
1414
<!-- BEGIN RELEASE NOTES -->
1515
### [Unreleased]
1616

17+
### [0.13.0] - 2023-07-05
18+
19+
#### Added
20+
- The `force` command, allowing users to override the next version of their release.
21+
1722
### [0.12.0] - 2023-03-18
1823

1924
#### Added
@@ -167,7 +172,8 @@ The [Changelogger tool](https://pypi.org/project/changelogged) is used for autom
167172
- `unreleased add`, which allows inline or prompted adding of unreleased changes.
168173
<!-- END RELEASE NOTES -->
169174
<!-- BEGIN LINKS -->
170-
[Unreleased]: https://github.com/award28/changelogger/compare/0.12.0...HEAD
175+
[Unreleased]: https://github.com/award28/changelogger/compare/0.13.0...HEAD
176+
[0.13.0]: https://github.com/award28/changelogger/compare/0.12.0...0.13.0
171177
[0.12.0]: https://github.com/award28/changelogger/compare/0.11.4...0.12.0
172178
[0.11.4]: https://github.com/award28/changelogger/compare/0.11.3...0.11.4
173179
[0.11.3]: https://github.com/award28/changelogger/compare/0.11.2...0.11.3

changelogger/app/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
from changelogger.app.commands.add import add
1111
from changelogger.app.commands.check import check
12+
from changelogger.app.commands.force import force
1213
from changelogger.app.commands.init import init
1314
from changelogger.app.commands.notes import notes
1415
from changelogger.app.commands.precommit import precommit
@@ -49,6 +50,7 @@ def add_command(
4950
app.add_command(init)
5051
app.add_command(notes)
5152
app.add_command(upgrade, "up")
53+
app.add_command(force)
5254
app.add_command(versions)
5355
app.add_command(precommit, hidden=True)
5456

changelogger/app/commands/force.py

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
import typer
2+
from rich import print
3+
from rich.markdown import Markdown
4+
5+
from changelogger import changelog
6+
from changelogger.app.prompts import (
7+
prompt_unreleased_changelog,
8+
rollback_handler,
9+
)
10+
from changelogger.conf import settings
11+
from changelogger.models.domain_models import ChangelogUpdate, VersionInfo
12+
13+
14+
def force(
15+
forced_version: str,
16+
confirm: bool = typer.Option(
17+
True,
18+
help="Confirm the release notes before applying them.",
19+
),
20+
prompt_changelog: bool = typer.Option(
21+
True,
22+
help="Prompt for additional release notes before applying them.",
23+
),
24+
) -> None:
25+
"""Force a version override for the upgrade."""
26+
old_version = changelog.get_latest_version()
27+
new_version = VersionInfo.parse(forced_version)
28+
29+
release_notes = changelog.get_release_notes("Unreleased", old_version)
30+
update = ChangelogUpdate(
31+
old_version=old_version,
32+
new_version=new_version,
33+
release_notes=release_notes,
34+
)
35+
36+
if prompt_changelog:
37+
update = prompt_unreleased_changelog(update)
38+
39+
print(f"Upgrading {old_version} ==> {new_version}")
40+
md = f"\n# Changelog updates for [{new_version}]\n"
41+
if update_md := update.release_notes.markdown():
42+
md += update_md
43+
else:
44+
md += "\n*No notes found or added*"
45+
46+
md += "\n---\n"
47+
print(Markdown(md))
48+
49+
if confirm:
50+
typer.confirm("Do these changes look correct?", abort=True)
51+
52+
with rollback_handler():
53+
changelog.update_versioned_files(
54+
update,
55+
settings.VERSIONED_FILES,
56+
)

changelogger/conf/defaults.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from pathlib import Path
22

3-
CHANGELOGGER_VERSION = "0.12.0"
3+
CHANGELOGGER_VERSION = "0.13.0"
44

55
DEFAULT_CHANGELOG_PATH = Path("CHANGELOG.md")
66

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "changelogged"
3-
version = "0.12.0"
3+
version = "0.13.0"
44
description = "Automated management of your changelog and other versioned files, following the principles of Keep a Changelog and Semantic Versioning."
55
license = "MIT"
66
authors = ["award28 <austin.ward@klaviyo.com>"]

0 commit comments

Comments
 (0)