forked from Helium314/HeliBoard
-
Notifications
You must be signed in to change notification settings - Fork 0
/
release.py
executable file
·77 lines (62 loc) · 2.64 KB
/
release.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
#!/bin/python
import os
import subprocess
import zipfile
from urllib.request import urlretrieve
# git diff should be empty, and there should be no errors
def check_git():
result = subprocess.run(["git", "diff", "--name-only"], capture_output=True)
if result.returncode != 0 or len(result.stdout) != 0:
raise ValueError("uncommitted changes")
# download and update translations
def update_translations():
url = "https://translate.codeberg.org/download/heliboard/?format=zip"
zip_file_name = "translations.zip"
urlretrieve(url, zip_file_name)
# extract all in heliboard/heliboard/app/src/main/res and heliboard/heliboard/fastlane/metadata
with zipfile.ZipFile(zip_file_name, "r") as f:
for file in f.filelist:
if not file.filename.startswith("heliboard/heliboard/app/src/main/res")\
and not file.filename.startswith("heliboard/heliboard/fastlane/metadata"):
continue
file.filename = file.filename.replace("heliboard/heliboard/", "")
f.extract(file)
os.remove(zip_file_name)
# git diff to make sure default strings are the same
def check_default_values_diff():
result = subprocess.run(["git", "diff", "--name-only", "app/src/main/res/values"], capture_output=True)
if result.returncode != 0 or len(result.stdout) != 0:
raise ValueError("default strings changed after translation import, something is wrong")
# run that task
def update_dict_list():
# gradle = "gradlew" # Linux
# gradle = "gradlew.bat" # Windows
gradle = "../../builder/realgradle.sh" # weird path for historic reasons
result = subprocess.run([gradle, ":tools:make-dict-list:makeDictList"]) # todo: replace with python code
assert result.returncode == 0
# check whether there is a changelog file for current version and print result and version code
def check_changelog():
changelog_dir = "fastlane/metadata/android/en-US/changelogs"
assert os.path.isdir(changelog_dir)
filenames = list(os.scandir(changelog_dir))
filenames.sort()
changelog_version = filenames[-1].name.replace(".txt", "")
version = ""
with open("app/build.gradle") as f:
for line in f:
line = line.lstrip()
if line.startswith("versionCode"):
version = line.split(" ")[1].rstrip()
break
if changelog_version == version:
print("changelog for", version, "exists")
else:
print("changelog for", version, "does not exist")
def main():
check_git()
update_translations()
check_default_values_diff()
update_dict_list()
check_changelog()
if __name__ == "__main__":
main()