-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathupdate_versioning.py
85 lines (62 loc) · 2.3 KB
/
update_versioning.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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import os
import sys
def validate_version(new_version: str):
if "." not in new_version:
return False
parts = new_version.split(".")
# every part except the last needs to be a number
for i in range(len(parts) - 1):
try:
int(parts[i])
except:
return False
# the last part just needs to start with a number
return parts[len(parts) - 1][0].isdigit()
def update(new_version: str):
__update_readme(new_version)
__update_setup(new_version)
__update_config(new_version)
def __update_readme(new_version: str):
readme = os.path.join(".", "Readme.md")
# update version occurrence in headline
with open(readme, 'r') as file:
data = file.read()
prefix = "Qrogue v"
start = data.find(prefix)
end = data.find("#", start + len(prefix))
data = f"{data[:start]}{prefix}{new_version} {data[end:]}"
with open(readme, 'w') as file:
file.write(data)
def __update_setup(new_version: str):
setup = os.path.join(".", "setup.py")
with open(setup, 'r') as file:
data = file.read()
# first update the pypi version
prefix = "version=\'"
start = data.find(prefix)
end = data.find("\'", start + len(prefix))
data = f"{data[:start]}{prefix}{new_version}{data[end:]}"
# second update the github release url
prefix = "https://github.com/7Magic7Mike7/Qrogue/releases/tag/"
start = data.find(prefix)
end = data.find("\'", start + len(prefix))
data = f"{data[:start]}{prefix}{new_version}{data[end:]}"
with open(setup, 'w') as file:
file.write(data)
def __update_config(new_version: str):
config = os.path.join("qrogue", "util", "config", "config.py")
with open(config, 'r') as file:
data = file.read()
prefix = "__VERSION = \"v"
start = data.find(prefix)
end = data.find("\"", start + len(prefix))
data = f"{data[:start]}{prefix}{new_version}{data[end:]}"
with open(config, 'w') as file:
file.write(data)
if __name__ == "__main__":
new_version_ = sys.argv[1]
if validate_version(new_version_):
update(new_version_)
print("Successfully updated the version.")
else:
print("ERROR! Specified version has wrong format.")