Skip to content

Commit fccdd8f

Browse files
committed
be more flexible for alpha/rc
1 parent 41c1658 commit fccdd8f

File tree

1 file changed

+21
-6
lines changed

1 file changed

+21
-6
lines changed

scripts/release.py

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@
2727

2828
RELEASE_BRANCH_PREFIX = "prepare-release-"
2929

30+
PRERELEASE_FLAVORS = ("alpha", "rc")
31+
32+
PRERELEASE_FLAVOR_CODES = {"alpha": "a", "rc": "rc"}
33+
3034
PRERELEASE_VERSION_PATTERN = re.compile(r"^(a|rc)([1-9]\d*)$")
3135

3236
RELEASE_BRANCH_PATTERN = re.compile(r"^\d+\.\d+\.x$")
@@ -147,14 +151,27 @@ def is_valid_version_number(v: Text) -> bool:
147151

148152
current_version = Version.coerce(get_current_version())
149153
next_patch_version = str(current_version.next_patch())
150-
next_alpha_version = str(next_prerelease(current_version, "a"))
154+
next_alpha_version = str(next_prerelease(current_version, "alpha"))
151155
version = questionary.text(
152156
f"What is the version number you want to release "
153157
f"('major', 'minor', 'patch', 'alpha', 'rc' or valid version number "
154158
f"e.g. '{next_patch_version}' or '{next_alpha_version}')?",
155159
validate=is_valid_version_number,
156160
).ask()
157161

162+
if version in PRERELEASE_FLAVORS and not current_version.prerelease:
163+
# at this stage it's hard to guess the kind of version bump the
164+
# releaser wants, so we ask them
165+
version = questionary.select(
166+
f"Which {version} do you want to release?",
167+
choices=[
168+
str(next_prerelease(current_version, version)),
169+
str(next_prerelease(current_version.next_patch(), version)),
170+
str(next_prerelease(current_version.next_minor(), version)),
171+
str(next_prerelease(current_version.next_major(), version)),
172+
],
173+
).ask()
174+
158175
if version:
159176
return version
160177
else:
@@ -300,7 +317,7 @@ def next_prerelease(version: Version, flavor: Text) -> Version:
300317
major=version.major,
301318
minor=version.minor,
302319
patch=version.patch,
303-
prerelease=(f"{flavor}{prerelease_number + 1}",),
320+
prerelease=(f"{PRERELEASE_FLAVOR_CODES[flavor]}{prerelease_number + 1}",),
304321
partial=version.partial,
305322
)
306323

@@ -313,10 +330,8 @@ def parse_next_version(version: Text) -> Version:
313330
return Version.coerce(get_current_version()).next_minor()
314331
elif version == "patch":
315332
return Version.coerce(get_current_version()).next_patch()
316-
elif version == "alpha":
317-
return next_prerelease(Version.coerce(get_current_version()), "a")
318-
elif version == "rc":
319-
return next_prerelease(Version.coerce(get_current_version()), "rc")
333+
elif version in PRERELEASE_FLAVORS:
334+
return next_prerelease(Version.coerce(get_current_version()), version)
320335
elif validate_version(version):
321336
return Version.coerce(version)
322337
else:

0 commit comments

Comments
 (0)