Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit a7f6406

Browse files
committed
refactor(changelog): simplify logic for get_oldest_and_newest_rev
1 parent 6b4f8b0 commit a7f6406

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
@@ -318,39 +318,28 @@ def get_oldest_and_newest_rev(
318318
- `0.1.0..0.4.0`: as a range
319319
- `0.3.0`: as a single version
320320
"""
321-
oldest: str | None = None
322-
newest: str | None = None
323-
try:
324-
oldest, newest = version.split("..")
325-
except ValueError:
326-
newest = version
327-
if not (newest_tag := rules.find_tag_for(tags, newest)):
321+
oldest_version, sep, newest_version = version.partition("..")
322+
if not sep:
323+
newest_version = version
324+
oldest_version = ""
325+
326+
def get_tag_name(v: str) -> str:
327+
if tag := rules.find_tag_for(tags, v):
328+
return tag.name
328329
raise NoCommitsFoundError("Could not find a valid revision range.")
329330

330-
oldest_tag = None
331-
oldest_tag_name = None
332-
if oldest:
333-
if not (oldest_tag := rules.find_tag_for(tags, oldest)):
334-
raise NoCommitsFoundError("Could not find a valid revision range.")
335-
oldest_tag_name = oldest_tag.name
331+
newest_tag_name = get_tag_name(newest_version)
332+
oldest_tag_name = get_tag_name(oldest_version) if oldest_version else None
336333

337-
tags_range = get_smart_tag_range(
338-
tags, newest=newest_tag.name, oldest=oldest_tag_name
339-
)
334+
tags_range = get_smart_tag_range(tags, newest_tag_name, oldest_tag_name)
340335
if not tags_range:
341336
raise NoCommitsFoundError("Could not find a valid revision range.")
342337

343338
oldest_rev: str | None = tags_range[-1].name
344-
newest_rev = newest_tag.name
345-
346-
# check if it's the first tag created
347-
# and it's also being requested as part of the range
348-
if oldest_rev == tags[-1].name and oldest_rev == oldest_tag_name:
349-
return None, newest_rev
350-
351-
# when they are the same, and it's also the
352-
# first tag created
353-
if oldest_rev == newest_rev:
354-
return None, newest_rev
355339

356-
return oldest_rev, newest_rev
340+
# Return None for oldest_rev if:
341+
# 1. The oldest tag is the last tag in the list and matches the requested oldest tag
342+
# 2. The oldest and the newest tag are the same
343+
if oldest_rev == oldest_tag_name == tags[-1].name or oldest_rev == newest_tag_name:
344+
oldest_rev = None
345+
return oldest_rev, newest_tag_name

0 commit comments

Comments
 (0)