2024-07-01 15:08:14 +10:00
|
|
|
# SPDX-FileCopyrightText: 2017-2023 Blender Authors
|
|
|
|
|
#
|
|
|
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
Implementation of blender's command line ``--addons`` argument,
|
|
|
|
|
e.g. ``--addons a,b,c`` to enable add-ons.
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
__all__ = (
|
|
|
|
|
"set_from_cli",
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def set_from_cli(addons_as_string):
|
|
|
|
|
from addon_utils import (
|
|
|
|
|
check,
|
|
|
|
|
check_extension,
|
|
|
|
|
enable,
|
|
|
|
|
extensions_refresh,
|
|
|
|
|
)
|
|
|
|
|
addon_modules = addons_as_string.split(",")
|
|
|
|
|
addon_modules_extensions = [m for m in addon_modules if check_extension(m)]
|
|
|
|
|
addon_modules_extensions_has_failure = False
|
|
|
|
|
|
|
|
|
|
if addon_modules_extensions:
|
|
|
|
|
extensions_refresh(
|
|
|
|
|
ensure_wheels=True,
|
|
|
|
|
addon_modules_pending=addon_modules_extensions,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
for m in addon_modules:
|
|
|
|
|
if check(m)[1] is False:
|
2024-11-09 11:44:31 +11:00
|
|
|
if enable(m, persistent=True, refresh_handled=True) is None:
|
2024-07-01 15:08:14 +10:00
|
|
|
if check_extension(m):
|
|
|
|
|
addon_modules_extensions_has_failure = True
|
|
|
|
|
|
|
|
|
|
# Re-calculate wheels if any extensions failed to be enabled.
|
|
|
|
|
if addon_modules_extensions_has_failure:
|
|
|
|
|
extensions_refresh(
|
|
|
|
|
ensure_wheels=True,
|
|
|
|
|
)
|