33 lines
1.0 KiB
Python
33 lines
1.0 KiB
Python
import pathlib
|
|
import sys
|
|
|
|
import bpy
|
|
|
|
|
|
SOURCES = {
|
|
"InternalSafe.py": "value = 7\nprint(value)\n",
|
|
"ModuleAutorun.py": "def register():\n return 'blocked'\n",
|
|
"ExternalProject.py": "message = 'project relative'\n",
|
|
}
|
|
|
|
|
|
def main(output_path):
|
|
bpy.ops.wm.read_factory_settings(use_empty=True)
|
|
for name, source in SOURCES.items():
|
|
text = bpy.data.texts.new(name)
|
|
text.write(source)
|
|
bpy.data.texts["ModuleAutorun.py"].use_module = True
|
|
bpy.data.texts["ExternalProject.py"].filepath = "//scripts/external_project.py"
|
|
|
|
path = pathlib.Path(output_path).resolve()
|
|
path.parent.mkdir(parents=True, exist_ok=True)
|
|
bpy.ops.wm.save_as_mainfile(filepath=str(path), compress=False)
|
|
print(f"script-fixture-generated path={path} sources={len(SOURCES)}")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
arguments = sys.argv[sys.argv.index("--") + 1:]
|
|
if len(arguments) != 1:
|
|
raise SystemExit("usage: blender -b --python generate-script-fixture.py -- output.blend")
|
|
main(arguments[0])
|