Skip to content

Commit 2f6de2f

Browse files
committed
pip install
1 parent 3b375a0 commit 2f6de2f

1 file changed

Lines changed: 19 additions & 11 deletions

File tree

app/utility/plugin_manager.py

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -59,19 +59,27 @@ async def enable_plugin(self, plugin_name: str, build_gui=False) -> bool:
5959
module = self.load_plugin(plugin_name)
6060
if not module:
6161
return False
62-
63-
await self._install_requirements_if_needed(plugin_name)
64-
65-
restart_required = False
66-
if build_gui:
67-
restart_required = await self._build_plugin_gui_if_needed(plugin_name)
68-
6962
try:
70-
hook = importlib.import_module(f'plugins.{plugin_name}.hook')
71-
except ModuleNotFoundError:
72-
print(f"[PluginManager] Hook not found for {plugin_name}, skipping.")
73-
return restart_required
63+
# STEP 1 — install deps
64+
await self._install_requirements_if_needed(plugin_name)
65+
66+
# STEP 2 — build GUI
67+
restart_required = False
68+
if build_gui:
69+
restart_required = await self._build_plugin_gui_if_needed(plugin_name)
70+
71+
# STEP 3 — only now commit enable state
72+
try:
73+
importlib.import_module(f'plugins.{plugin_name}.hook')
74+
except ModuleNotFoundError as e:
75+
print(f"[PluginManager] Hook not found for {plugin_name}, skipping.")
76+
return restart_required
77+
except Exception as e:
78+
# NOTHING has been enabled yet — safe to abort
79+
print(f"[PluginManager] enable failed for {plugin_name}: {e}")
80+
raise
7481

82+
# STEP 4 — commit enable state only after successful enable
7583
self.enabled_plugins[plugin_name] = module
7684

7785
return restart_required

0 commit comments

Comments
 (0)