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("============================")
|