Anbother attempt to not hang on bad plguins.

This commit is contained in:
Storm Dragon 2025-04-03 22:18:21 -04:00
parent 682d66e08f
commit 987be0eee2

View File

@ -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()