Fix '--addons' argument

- only enable addons which aren't already enabled
- use 'persistent' load option (new file wont reset)
This commit is contained in:
Campbell Barton 2015-06-14 22:17:38 +10:00 committed by Sergey Sharybin
parent a3e9d842ae
commit 1752dd64de
1 changed files with 10 additions and 3 deletions

View File

@ -1303,11 +1303,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);