- Implemented RuntimeModelsPanel and DebugPanel for UI integration in Blender. - Created SnapFormPreferences to manage user settings for storage and runtime configuration. - Defined SnapFormSettings to hold various properties related to input, model selection, and export options. - Developed runtime management functions for installation, model downloading, and reconstruction commands. - Added status bar functionality to display job progress and status in the Blender UI. - Implemented worker script for handling model downloads and depth reconstruction tasks. - Introduced unit tests for download progress reporting and image depth extraction functionalities.
37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
import tomllib
|
|
from pathlib import Path
|
|
from zipfile import ZIP_DEFLATED, ZipFile
|
|
|
|
|
|
PROJECT_ROOT = Path(__file__).resolve().parent
|
|
SOURCE_DIR = PROJECT_ROOT / "src" / "snapform"
|
|
DIST_DIR = PROJECT_ROOT / "dist"
|
|
|
|
|
|
def build_extension():
|
|
manifest = tomllib.loads(
|
|
(SOURCE_DIR / "blender_manifest.toml").read_text(encoding="utf-8")
|
|
)
|
|
blender_version = manifest["blender_version_min"].split(".")
|
|
blender_tag = f"b{blender_version[0]}{blender_version[1]}"
|
|
output_path = DIST_DIR / (
|
|
f"{manifest['name']}.v{manifest['version']}.{blender_tag}.zip"
|
|
)
|
|
DIST_DIR.mkdir(exist_ok=True)
|
|
|
|
with ZipFile(output_path, "w", ZIP_DEFLATED) as archive:
|
|
for source_path in sorted(SOURCE_DIR.rglob("*")):
|
|
if not source_path.is_file():
|
|
continue
|
|
if "__pycache__" in source_path.parts:
|
|
continue
|
|
archive.write(source_path, source_path.relative_to(SOURCE_DIR))
|
|
|
|
return output_path
|
|
|
|
|
|
if __name__ == "__main__":
|
|
extension_path = build_extension()
|
|
size_mib = extension_path.stat().st_size / (1024 * 1024)
|
|
print(f"Built {extension_path} ({size_mib:.2f} MiB)")
|