-
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathincVersion.py
56 lines (40 loc) · 1.89 KB
/
incVersion.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import sys, argparse, datetime
def incVersion(content: list[str]) -> str:
result, stages = [], {}
major, minor, revision, build, prefix = \
None, None, None, None, None
for i in content.split("\n"):
if "#define" in i.split(" "):
match "_".join(i.split(" ")[1].split("_")[1:]):
case "VERSION_MAJOR":
major = int(i.split(" ")[2])
case "VERSION_MINOR":
minor = int(i.split(" ")[2])
case "VERSION_REVISION":
revision = int(i.split(" ")[2])
case "VERSION_BUILD":
build = int(i.split(" ")[2]) + 1
i = " ".join(i.split(" ")[:2] + [str(build)])
case "VERSION_BUILD_DATE":
i = " ".join(i.split(" ")[:2] + ["\"" + datetime.datetime.now().strftime("%Y-%m-%d") + "\""])
case "VERSION_STAGE":
prefix = ["pre", "a", "b", "rc", None][stages["_".join(i.split(" ")[2].split("_")[2:])]]
case "VERSION_STRING":
i = " ".join(i.split(" ")[:2] + \
["\"" + ".".join([str(major), str(minor), str(build) + ("-" + prefix if prefix else ""), str(revision)]) + "\""])
case _:
if i.split(" ")[1].split("_")[1] in ["STAGE"]:
stages["_".join(i.split(" ")[1].split("_")[2:])] = int(i.split(" ")[2])
result.append(i)
return "\n".join(result)
def main(argv: list[str]) -> int:
parser = argparse.ArgumentParser()
parser.add_argument("-p", "--path", required = True)
args = parser.parse_args()
with open(args.path, "r") as file:
result = incVersion(file.read())
with open(args.path, "w") as file:
file.write(result)
return 0
if __name__ == "__main__":
sys.exit(main(sys.argv))