@@ -128,6 +128,40 @@ async def _create_release(
128
128
prerelease = release_version .is_pre_release or github_pre_release ,
129
129
)
130
130
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
+
131
165
async def async_run ( # type: ignore[override]
132
166
self ,
133
167
* ,
@@ -196,32 +230,11 @@ async def async_run( # type: ignore[override]
196
230
197
231
self .terminal .info (f"Using versioning scheme { versioning_scheme .name } " )
198
232
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
+ )
225
238
if not last_release_version :
226
239
if not release_version :
227
240
self .print_error ("Unable to determine last release version." )
@@ -231,8 +244,7 @@ async def async_run( # type: ignore[override]
231
244
f"Creating the initial release { release_version } "
232
245
)
233
246
234
- else :
235
- self .terminal .info (f"Last release was { last_release_version } " )
247
+ self .terminal .info (f"Last release is { last_release_version } " )
236
248
237
249
calculator = versioning_scheme .calculator ()
238
250
0 commit comments