kopia lustrzana https://github.com/vilemduha/blendercam
53 wiersze
1.8 KiB
Python
53 wiersze
1.8 KiB
Python
import pathlib
|
|
import shutil
|
|
import subprocess
|
|
import sys
|
|
import tempfile
|
|
|
|
|
|
INSTALL_CODE = f"""
|
|
import bpy
|
|
bpy.context.preferences.system.use_online_access = True
|
|
bpy.ops.extensions.repo_sync_all(use_active_only=False)
|
|
bpy.ops.extensions.package_install_files(filepath='{sys.argv[1]}', repo='user_default')
|
|
bpy.ops.extensions.package_install(repo_index=0, pkg_id="stl_format_legacy")
|
|
bpy.ops.extensions.package_install(repo_index=0, pkg_id="simplify_curves_plus")
|
|
bpy.ops.extensions.package_install(repo_index=0, pkg_id="curve_tools")
|
|
bpy.ops.wm.save_userpref()
|
|
"""
|
|
|
|
NUM_RETRIES = 10
|
|
|
|
with tempfile.TemporaryDirectory() as td:
|
|
file = pathlib.Path(td, "install.py")
|
|
file.write_text(INSTALL_CODE)
|
|
command = [shutil.which("blender"), "-b", "-P", str(file)]
|
|
|
|
# blender 4.0 installing addon crashes sometimes on mac github actions...
|
|
for x in range(NUM_RETRIES):
|
|
try:
|
|
subprocess.run(
|
|
command,
|
|
shell=False,
|
|
check=True,
|
|
stdout=subprocess.PIPE,
|
|
stderr=subprocess.STDOUT,
|
|
text=True,
|
|
)
|
|
print("Addon Install: Success!")
|
|
sys.exit(0)
|
|
except subprocess.CalledProcessError as e:
|
|
print("Addon Install: Failed!")
|
|
print(f"Retrying: {e}")
|
|
print("Command Output:")
|
|
print("------------------------------")
|
|
print(e.output)
|
|
print("------------------------------")
|
|
for line in str(e.output):
|
|
if line.startswith("Writing: "):
|
|
crash_file = pathlib.Path(line[len("Writing: ") :])
|
|
if crash_file.exists():
|
|
print("Crash log:\n================")
|
|
print(crash_file.read_text())
|
|
print("============================")
|