Skip to content

Commit 357d65f

Browse files
bjoernricksgreenbonebot
authored andcommitted
Change: Improve getting last release version for CreateReleaseCommand
Move getting the last release version into an own method.
1 parent a19718b commit 357d65f

File tree

1 file changed

+40
-28
lines changed

1 file changed

+40
-28
lines changed

pontos/release/create.py

+40-28
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,40 @@ async def _create_release(
128128
prerelease=release_version.is_pre_release or github_pre_release,
129129
)
130130

131+
def _get_last_release_version(
132+
self,
133+
*,
134+
versioning_scheme: VersioningScheme,
135+
release_type: ReleaseType,
136+
release_series: Optional[str] = None,
137+
) -> Optional[Version]:
138+
try:
139+
return get_last_release_version(
140+
git=self.git,
141+
parse_version=versioning_scheme.parse_version,
142+
git_tag_prefix=self.git_tag_prefix,
143+
tag_name=(
144+
f"{self.git_tag_prefix}{release_series}.*"
145+
if release_series
146+
else None
147+
),
148+
# include changes from pre-releases in release changelog for
149+
# non pre-release changes
150+
ignore_pre_releases=release_type
151+
not in [
152+
ReleaseType.ALPHA,
153+
ReleaseType.BETA,
154+
ReleaseType.RELEASE_CANDIDATE,
155+
]
156+
# but not when using a release series because then we might not
157+
# be able to determine the last release if there are only
158+
# pre-releases in the series yet
159+
and not release_series,
160+
)
161+
except PontosError as e:
162+
self.print_warning(f"Could not determine last release version. {e}")
163+
return None
164+
131165
async def async_run( # type: ignore[override]
132166
self,
133167
*,
@@ -196,32 +230,11 @@ async def async_run( # type: ignore[override]
196230

197231
self.terminal.info(f"Using versioning scheme {versioning_scheme.name}")
198232

199-
try:
200-
last_release_version = get_last_release_version(
201-
parse_version=versioning_scheme.parse_version,
202-
git_tag_prefix=self.git_tag_prefix,
203-
tag_name=(
204-
f"{self.git_tag_prefix}{release_series}.*"
205-
if release_series
206-
else None
207-
),
208-
# include changes from pre-releases in release changelog for
209-
# non pre-release changes
210-
ignore_pre_releases=release_type
211-
not in [
212-
ReleaseType.ALPHA,
213-
ReleaseType.BETA,
214-
ReleaseType.RELEASE_CANDIDATE,
215-
]
216-
# but not when using a release series because then we might not
217-
# be able to determine the last release if there are only
218-
# pre-releases in the series yet
219-
and not release_series,
220-
)
221-
except PontosError as e:
222-
last_release_version = None
223-
self.print_warning(f"Could not determine last release version. {e}")
224-
233+
last_release_version = self._get_last_release_version(
234+
versioning_scheme=versioning_scheme,
235+
release_type=release_type,
236+
release_series=release_series,
237+
)
225238
if not last_release_version:
226239
if not release_version:
227240
self.print_error("Unable to determine last release version.")
@@ -231,8 +244,7 @@ async def async_run( # type: ignore[override]
231244
f"Creating the initial release {release_version}"
232245
)
233246

234-
else:
235-
self.terminal.info(f"Last release was {last_release_version}")
247+
self.terminal.info(f"Last release is {last_release_version}")
236248

237249
calculator = versioning_scheme.calculator()
238250

0 commit comments

Comments
 (0)