Anbother attempt to not hang on bad plguins.
This commit is contained in:
parent
682d66e08f
commit
987be0eee2
@ -232,7 +232,6 @@ class PluginSystemManager:
|
|||||||
return self._active_plugins
|
return self._active_plugins
|
||||||
|
|
||||||
def setActivePlugins(self, activePlugins):
|
def setActivePlugins(self, activePlugins):
|
||||||
"""Set active plugins and sync their state."""
|
|
||||||
logger.info(f"Setting active plugins: {activePlugins}")
|
logger.info(f"Setting active plugins: {activePlugins}")
|
||||||
|
|
||||||
# Make sure we have scanned for plugins first
|
# Make sure we have scanned for plugins first
|
||||||
@ -240,21 +239,34 @@ class PluginSystemManager:
|
|||||||
logger.info("No plugins found, rescanning...")
|
logger.info("No plugins found, rescanning...")
|
||||||
self.rescanPlugins()
|
self.rescanPlugins()
|
||||||
|
|
||||||
# Double-check we found plugins after rescanning
|
# Create a clean list of valid active plugins
|
||||||
if not self._plugins and activePlugins:
|
|
||||||
logger.warning("No plugins found after rescanning but active plugins requested. Continuing anyway.")
|
|
||||||
|
|
||||||
self._active_plugins = activePlugins
|
|
||||||
|
|
||||||
# Log active vs available plugins
|
|
||||||
available_plugins = [p.get_module_name() for p in self.plugins]
|
available_plugins = [p.get_module_name() for p in self.plugins]
|
||||||
logger.info(f"Available plugins: {available_plugins}")
|
valid_active_plugins = []
|
||||||
logger.info(f"Active plugins: {self._active_plugins}")
|
|
||||||
|
|
||||||
# Find missing plugins
|
for plugin_name in activePlugins:
|
||||||
missing_plugins = [p for p in self._active_plugins if p not in available_plugins]
|
# Check for exact match first
|
||||||
if missing_plugins:
|
if plugin_name in available_plugins:
|
||||||
logger.warning(f"Active plugins not found: {missing_plugins}")
|
valid_active_plugins.append(plugin_name)
|
||||||
|
continue
|
||||||
|
|
||||||
|
# Try case-insensitive match
|
||||||
|
plugin_name_lower = plugin_name.lower()
|
||||||
|
matched = False
|
||||||
|
for available in available_plugins:
|
||||||
|
if available.lower() == plugin_name_lower:
|
||||||
|
# Use the correctly cased name from available plugins
|
||||||
|
valid_active_plugins.append(available)
|
||||||
|
matched = True
|
||||||
|
logger.info(f"Case-insensitive match: requested '{plugin_name}', using '{available}'")
|
||||||
|
break
|
||||||
|
|
||||||
|
if not matched:
|
||||||
|
logger.warning(f"Plugin '{plugin_name}' not found, skipping")
|
||||||
|
|
||||||
|
# Only use valid plugins
|
||||||
|
self._active_plugins = valid_active_plugins
|
||||||
|
|
||||||
|
logger.info(f"Using verified active plugins: {self._active_plugins}")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.syncAllPluginsActive()
|
self.syncAllPluginsActive()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user