-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathbuild.py
94 lines (76 loc) · 3.87 KB
/
build.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
86
87
88
89
90
91
92
93
94
import json
import os
import shutil
import site
import subprocess
import sys
import zipfile
from io import BytesIO
import requests
import update_check
try:
import requests_cache
except ImportError:
requests_cache = None
def main():
print("Building Radeline release package\n")
backups_path = r'Radeline\Optimizer\Backups'
if os.path.isdir(backups_path) and os.listdir(backups_path):
print("Backed up the optimizer backups")
shutil.copytree(backups_path, 'backups', dirs_exist_ok=True)
if os.path.isdir('Radeline'):
print("Deleting old build folder")
shutil.rmtree('Radeline')
else:
print("No old build folder to delete")
print('Creating new build folder')
os.mkdir('Radeline')
os.mkdir('Radeline\\resources')
os.mkdir('Radeline\\Optimizer')
os.mkdir('Radeline\\Optimizer\\Backups')
os.mkdir('Radeline\\Optimizer\\Optimized')
os.mkdir('Radeline\\Simulator')
compile_command = f'{sys.executable} "movement sim\\setup.py" build_ext --inplace'
subprocess.run(compile_command)
print("Copied", shutil.copy('movement sim\\sim_compiled.cp311-win32.pyd', 'Radeline\\Simulator\\'))
if requests_cache:
print("Using DL cache for interpreter")
requests_cache.install_cache('interpreter_dl_cache')
else:
print("Not using DL cache for interpreter")
interpreter_url = 'https://www.python.org/ftp/python/3.11.4/python-3.11.4-embed-win32.zip'
print(f"Downloading Python interpreter from {interpreter_url}...")
interpreter_data = requests.get(interpreter_url, timeout=30).content
with zipfile.ZipFile(BytesIO(interpreter_data), 'r') as interpreter_zip:
interpreter_zip.extractall(path=f"Radeline\\resources\\{interpreter_url.split('/')[-1][:-4]}\\")
if requests_cache:
requests_cache.uninstall_cache()
packages_dir = site.getsitepackages()[1]
needed_packages = ['beautifulsoup4', 'bs4', 'certifi', 'charset_normalizer', 'idna', 'keyboard', 'lxml', 'psutil', 'pyperclip', 'requests', 'soupsieve', 'tqdm', 'urllib3', 'yaml']
for site_package in os.listdir(packages_dir):
for needed_package in needed_packages:
if needed_package in site_package and os.path.isdir(f'{packages_dir}\\{site_package}'):
shutil.copytree(f'{packages_dir}\\{site_package}', f'Radeline\\resources\\packages\\{site_package}')
break
print(f"Copied {len(needed_packages)} packages from {packages_dir} to Radeline\\resources\\packages")
shutil.rmtree('Radeline\\resources\\packages\\psutil\\tests')
print("Deleted psutil tests")
print("Copied", shutil.copy('README.md', 'Radeline'))
print("Copied", shutil.copy('LICENSE', 'Radeline'))
print("Copied", shutil.copy('update_check.py', 'Radeline\\resources'))
print("Copied", shutil.copy('updater_data.json', 'Radeline\\resources'))
print("Copied", shutil.copy('optimizer\\main.py', 'Radeline\\Optimizer'))
print("Copied", shutil.copy('optimizer\\run.py', 'Radeline\\Optimizer'))
print("Copied", shutil.copy('optimizer\\run.bat', 'Radeline\\Optimizer'))
print("Copied", shutil.copy('optimizer\\settings.yaml', 'Radeline\\Optimizer'))
print("Copied", shutil.copy('movement sim\\run.py', 'Radeline\\Simulator'))
print("Copied", shutil.copy('movement sim\\run.bat', 'Radeline\\Simulator'))
print("Copied", shutil.copy('movement sim\\config.yaml', 'Radeline\\Simulator'))
print("Copied", shutil.copy('movement sim\\input_formatter.py', 'Radeline\\Simulator'))
print("Copied", shutil.copy('movement sim\\run_formatter.py', 'Radeline\\Simulator'))
print("Copied", shutil.copy('movement sim\\run formatter.bat', 'Radeline\\Simulator'))
print("Updating latest commit for update checker")
update_check.save_data.update_latest_commit('Radeline\\resources\\updater_data.json')
print("\nBuild finished")
if __name__ == '__main__':
main()