68 lines
1.5 KiB
Python
68 lines
1.5 KiB
Python
import argparse
|
|
import os
|
|
import shutil
|
|
import subprocess
|
|
import sys
|
|
|
|
PROJECT_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
|
|
ENTRY_POINT = os.path.join(PROJECT_ROOT, "src", "mind_reader", "app.py")
|
|
|
|
|
|
def build():
|
|
cmd = [
|
|
sys.executable,
|
|
"-m",
|
|
"PyInstaller",
|
|
"--noconfirm",
|
|
"--clean",
|
|
"--onedir",
|
|
"--windowed",
|
|
"--name",
|
|
"MindReader",
|
|
"--paths",
|
|
os.path.join(PROJECT_ROOT, "src"),
|
|
ENTRY_POINT,
|
|
]
|
|
|
|
result = subprocess.run(cmd, cwd=PROJECT_ROOT)
|
|
|
|
if result.returncode == 0:
|
|
dist_path = os.path.join(PROJECT_ROOT, "dist", "MindReader")
|
|
print("\nBuild completed!")
|
|
print(f"{dist_path}")
|
|
else:
|
|
print("\nError!")
|
|
|
|
|
|
def clean():
|
|
print("Cleaning...")
|
|
|
|
dirs_to_remove = [
|
|
os.path.join(PROJECT_ROOT, "build"),
|
|
os.path.join(PROJECT_ROOT, "dist"),
|
|
]
|
|
|
|
for d in dirs_to_remove:
|
|
if os.path.exists(d):
|
|
shutil.rmtree(d)
|
|
print(f"{d} - deleted")
|
|
|
|
for item in os.listdir(PROJECT_ROOT):
|
|
if item.endswith(".spec"):
|
|
spec_path = os.path.join(PROJECT_ROOT, item)
|
|
os.remove(spec_path)
|
|
print(f"{spec_path} - deleted")
|
|
|
|
print("Cleaning completed!")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("--clean-only", action="store_true")
|
|
args = parser.parse_args()
|
|
|
|
if args.clean_only:
|
|
clean()
|
|
else:
|
|
build()
|