Skip to content

Commit a2bc012

Browse files
authored
add .post support to rpm/deb version munger (ansible#42444)
1 parent 0f612d1 commit a2bc012

File tree

2 files changed

+22
-10
lines changed

2 files changed

+22
-10
lines changed

packaging/release/tests/version_helper_test.py

+3
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
@pytest.mark.parametrize('version,revision,codename,output_propname,expected', [
1111
('2.5.0.dev1', None, None, 'raw', '2.5.0.dev1'),
12+
('2.5.0a0.post0', None, None, 'raw', '2.5.0a0.post0'),
1213
('2.5.0', None, None, 'raw', '2.5.0'),
1314
('2.5.0.dev1', None, None, 'major_version', '2.5'),
1415
('2.5.0', None, None, 'major_version', '2.5'),
@@ -17,11 +18,13 @@
1718
('2.5.0.dev1', None, None, 'deb_version', '2.5.0~dev1'),
1819
('2.5.0b1', None, None, 'deb_version', '2.5.0~b1'),
1920
('2.5.0b1.dev1', None, None, 'deb_version', '2.5.0~b1~dev1'),
21+
('2.5.0b1.post0', None, None, 'deb_version', '2.5.0~b1~post0'),
2022
('2.5.0', None, None, 'deb_version', '2.5.0'),
2123
('2.5.0.dev1', None, None, 'deb_release', '1'),
2224
('2.5.0b1', 2, None, 'deb_release', '2'),
2325
('2.5.0.dev1', None, None, 'rpm_release', '0.1.dev1'),
2426
('2.5.0a1', None, None, 'rpm_release', '0.101.a1'),
27+
('2.5.0a1.post0', None, None, 'rpm_release', '0.101.a1.post0'),
2528
('2.5.0b1', None, None, 'rpm_release', '0.201.b1'),
2629
('2.5.0rc1', None, None, 'rpm_release', '0.1001.rc1'),
2730
('2.5.0rc1', '0.99', None, 'rpm_release', '0.99.rc1'),

packaging/release/versionhelper/version_helper.py

+19-10
Original file line numberDiff line numberDiff line change
@@ -31,21 +31,25 @@ def deb_version(self):
3131

3232
match = self._parsed_regex_match
3333

34-
# treat dev as prerelease for now
35-
if v.is_prerelease or match.group('dev'):
34+
# treat dev/post as prerelease for now; treat dev/post as equivalent and disallow together
35+
if v.is_prerelease or match.group('dev') or match.group('post'):
36+
if match.group('dev') and match.group('post'):
37+
raise Exception("dev and post may not currently be used together")
3638
if match.group('pre'):
3739
tag_value = match.group('pre')
3840
tag_type = match.group('pre_l')
3941
if match.group('dev'):
4042
tag_value += ('~%s' % match.group('dev').strip('.'))
43+
if match.group('post'):
44+
tag_value += ('~%s' % match.group('post').strip('.'))
4145
elif match.group('dev'):
4246
tag_type = "dev"
4347
tag_value = match.group('dev').strip('.')
48+
elif match.group('post'):
49+
tag_type = "dev"
50+
tag_value = match.group('post').strip('.')
4451
else:
4552
raise Exception("unknown prerelease type for version {0}".format(self._raw_version))
46-
47-
elif v.is_postrelease:
48-
raise Exception("post-release identifiers are not supported")
4953
else:
5054
tag_type = None
5155
tag_value = ''
@@ -66,23 +70,28 @@ def rpm_release(self):
6670
v = self._parsed_version
6771
match = self._parsed_regex_match
6872

69-
# treat presence of dev as prerelease for now
70-
if v.is_prerelease or match.group('dev'):
73+
# treat presence of dev/post as prerelease for now; treat dev/post the same and disallow together
74+
if v.is_prerelease or match.group('dev') or match.group('post'):
75+
if match.group('dev') and match.group('post'):
76+
raise Exception("dev and post may not currently be used together")
7177
if match.group('pre'):
7278
tag_value = match.group('pre')
7379
tag_type = match.group('pre_l')
7480
tag_ver = match.group('pre_n')
7581
if match.group('dev'):
7682
tag_value += match.group('dev')
83+
if match.group('post'):
84+
tag_value += match.group('post')
7785
elif match.group('dev'):
7886
tag_type = "dev"
7987
tag_value = match.group('dev')
8088
tag_ver = match.group('dev_n')
89+
elif match.group('post'):
90+
tag_type = "dev"
91+
tag_value = match.group('post')
92+
tag_ver = match.group('post_n')
8193
else:
8294
raise Exception("unknown prerelease type for version {0}".format(self._raw_version))
83-
84-
elif v.is_postrelease:
85-
raise Exception("post-release identifiers are not supported")
8695
else:
8796
tag_type = None
8897
tag_value = ''

0 commit comments

Comments
 (0)