Skip to content

Commit 2d5f7bf

Browse files
bearomorphismLee-W
authored andcommitted
refactor(changelog): simplify logic for get_oldest_and_newest_rev
1 parent 1fb11e0 commit 2d5f7bf

File tree

1 file changed

+17
-28
lines changed

1 file changed

+17
-28
lines changed

commitizen/changelog.py

Lines changed: 17 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -313,39 +313,28 @@ def get_oldest_and_newest_rev(
313313
- `0.1.0..0.4.0`: as a range
314314
- `0.3.0`: as a single version
315315
"""
316-
oldest: str | None = None
317-
newest: str | None = None
318-
try:
319-
oldest, newest = version.split("..")
320-
except ValueError:
321-
newest = version
322-
if not (newest_tag := rules.find_tag_for(tags, newest)):
316+
oldest_version, sep, newest_version = version.partition("..")
317+
if not sep:
318+
newest_version = version
319+
oldest_version = ""
320+
321+
def get_tag_name(v: str) -> str:
322+
if tag := rules.find_tag_for(tags, v):
323+
return tag.name
323324
raise NoCommitsFoundError("Could not find a valid revision range.")
324325

325-
oldest_tag = None
326-
oldest_tag_name = None
327-
if oldest:
328-
if not (oldest_tag := rules.find_tag_for(tags, oldest)):
329-
raise NoCommitsFoundError("Could not find a valid revision range.")
330-
oldest_tag_name = oldest_tag.name
326+
newest_tag_name = get_tag_name(newest_version)
327+
oldest_tag_name = get_tag_name(oldest_version) if oldest_version else None
331328

332-
tags_range = get_smart_tag_range(
333-
tags, newest=newest_tag.name, oldest=oldest_tag_name
334-
)
329+
tags_range = get_smart_tag_range(tags, newest_tag_name, oldest_tag_name)
335330
if not tags_range:
336331
raise NoCommitsFoundError("Could not find a valid revision range.")
337332

338333
oldest_rev: str | None = tags_range[-1].name
339-
newest_rev = newest_tag.name
340-
341-
# check if it's the first tag created
342-
# and it's also being requested as part of the range
343-
if oldest_rev == tags[-1].name and oldest_rev == oldest_tag_name:
344-
return None, newest_rev
345-
346-
# when they are the same, and it's also the
347-
# first tag created
348-
if oldest_rev == newest_rev:
349-
return None, newest_rev
350334

351-
return oldest_rev, newest_rev
335+
# Return None for oldest_rev if:
336+
# 1. The oldest tag is the last tag in the list and matches the requested oldest tag
337+
# 2. The oldest and the newest tag are the same
338+
if oldest_rev == oldest_tag_name == tags[-1].name or oldest_rev == newest_tag_name:
339+
oldest_rev = None
340+
return oldest_rev, newest_tag_name

0 commit comments

Comments
 (0)