-
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathrelease.py
56 lines (45 loc) · 1.66 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
import shutil
import os
addon_folder = "sample/addons/"
addon_name = "discord-game-sdk-godot"
exclude_patterns = [".lib", ".exp", ".ilk", ".pdb", ".obj", ".os"]
def read_version_from_plugin_config():
version = ""
with open(addon_folder + addon_name + "/plugin.cfg", "r") as f:
for line in f:
if line.startswith("version="):
version = line.split("=")[1].replace('"', "").strip()
break
return version
def copytree(src, dst, symlinks=False, ignore=None):
if not os.path.exists(dst):
os.makedirs(dst)
for item in os.listdir(src):
if item == ".git":
continue
s = os.path.join(src, item)
d = os.path.join(dst, item)
if os.path.isdir(s):
copytree(s, d, symlinks, ignore)
else:
if not any(x in s for x in exclude_patterns):
shutil.copy2(s, d)
def make_zip_archive(source, destination):
base = os.path.basename(destination)
name = base.split('.')[0]
archive_from = os.path.dirname(source)
archive_to = os.path.basename(source.strip(os.sep))
shutil.make_archive(name, "zip", archive_from, archive_to)
shutil.move(f'{name}.zip', destination)
def release():
version = read_version_from_plugin_config()
copytree(addon_folder, "tmp/addons/")
shutil.copy2("README.md", f"tmp/addons/{addon_name}")
shutil.copy2("LICENSE.md", f"tmp/addons/{addon_name}")
file_name = f"{addon_name}_v{version}.zip"
make_zip_archive("tmp/addons", file_name)
shutil.rmtree("tmp")
return file_name
if __name__ == "__main__":
file_name = release()
print(f"Release complete!: {file_name}")