|
3 | 3 | import sys
|
4 | 4 | import re
|
5 | 5 |
|
6 |
| -VER_PATTERN = re.compile(r'^version = "(\d+)\.(\d+)\.(\d+)[^"]*" # auto', re.MULTILINE) |
7 |
| -VER_REPLACE = 'version = "%d.%d.%d" # auto' |
8 |
| -COMPONENTS = ("major", "minor", "patch") |
| 6 | +VER_PATTERN = re.compile( |
| 7 | + r'^version = "(\d+)\.(\d+)\.(\d+)(?:\-rc)?(\d*)[^"]*" # auto', re.MULTILINE |
| 8 | +) |
| 9 | +VER_REPLACE = 'version = "%d.%d.%d%s" # auto' |
| 10 | +COMPONENTS = ("major", "minor", "patch", "rc") |
9 | 11 |
|
10 | 12 |
|
11 | 13 | class Updater:
|
12 | 14 | component: str = "patch"
|
13 | 15 |
|
14 | 16 | @staticmethod
|
15 | 17 | def replace(match: re.Match[str]) -> str:
|
16 |
| - ver = [int(x) for x in match.groups()[: len(COMPONENTS)]] |
17 |
| - for _ in range(len(ver) - 1, len(COMPONENTS)): |
18 |
| - ver.append(0) |
19 |
| - print("old version:", ".".join([str(x) for x in ver])) |
| 18 | + ver = [] |
| 19 | + for v in match.groups(): |
| 20 | + try: |
| 21 | + ver.append(int(v)) |
| 22 | + except ValueError: |
| 23 | + ver.append(0) |
| 24 | + old_version = ".".join([str(x) for x in ver[:3]]) |
| 25 | + rc_str = "" |
| 26 | + if ver[3] > 0: |
| 27 | + rc_str = f"-rc{ver[3]}" |
| 28 | + old_version += rc_str |
| 29 | + print("old version:", old_version) |
20 | 30 | index = COMPONENTS.index(Updater.component)
|
21 | 31 | ver[index] += 1
|
22 |
| - for i in range(index + 1, 3): |
| 32 | + for i in range(index + 1, len(COMPONENTS)): |
23 | 33 | ver[i] = 0
|
24 |
| - print("new version:", ".".join([str(x) for x in ver])) |
25 |
| - return VER_REPLACE % tuple(ver) |
| 34 | + new_version = ".".join([str(x) for x in ver[:3]]) |
| 35 | + rc_str = f"-rc{ver[3]}" if ver[3] > 0 else "" |
| 36 | + new_version += rc_str |
| 37 | + print("new version:", new_version) |
| 38 | + return VER_REPLACE % (tuple(ver[:3]) + (rc_str,)) |
26 | 39 |
|
27 | 40 |
|
28 | 41 | def main():
|
|
0 commit comments