[Bf-blender-cvs] [1862991] master: Fix '--addons' argument

Campbell Barton noreply at git.blender.org
Sun Jun 14 14:31:13 CEST 2015


Commit: 18629918622c1acfb4cc69176c98df2e13589c00
Author: Campbell Barton
Date:   Sun Jun 14 22:17:38 2015 +1000
Branches: master
https://developer.blender.org/rB18629918622c1acfb4cc69176c98df2e13589c00

Fix '--addons' argument

- only enable addons which aren't already enabled
- use 'persistent' load option (new file wont reset)

===================================================================

M	source/creator/creator.c

===================================================================

diff --git a/source/creator/creator.c b/source/creator/creator.c
index 237dcec..8c1ae3d 100644
--- a/source/creator/creator.c
+++ b/source/creator/creator.c
@@ -1325,11 +1325,18 @@ static int set_addons(int argc, const char **argv, void *data)
 	/* workaround for scripts not getting a bpy.context.scene, causes internal errors elsewhere */
 	if (argc > 1) {
 #ifdef WITH_PYTHON
-		const int slen = strlen(argv[1]) + 128;
+		const char script_str[] =
+		        "from addon_utils import check, enable\n"
+		        "for m in '%s'.split(','):\n"
+		        "    if check(m)[1] is False:\n"
+		        "        enable(m, persistent=True)";
+		const int slen = strlen(argv[1]) + (sizeof(script_str) - 2);
 		char *str = malloc(slen);
 		bContext *C = data;
-		BLI_snprintf(str, slen, "[__import__('addon_utils').enable(i, default_set=False) for i in '%s'.split(',')]", argv[1]);
-		BPY_CTX_SETUP(BPY_string_exec(C, str));
+		BLI_snprintf(str, slen, script_str, argv[1]);
+
+		BLI_assert(strlen(str) + 1 == slen);
+		BPY_CTX_SETUP(BPY_string_exec_ex(C, str, false));
 		free(str);
 #else
 		UNUSED_VARS(argv, data);




More information about the Bf-blender-cvs mailing list