Skip to content

Commit 21c41a0

Browse files
authored
Merge pull request #394 from iceljc/features/enable-plugin-by-dependency
Features/enable plugin by dependency
2 parents 2dfd2f1 + ff0e48e commit 21c41a0

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

src/Infrastructure/BotSharp.Core/Plugins/PluginLoader.cs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,8 @@ public PluginDef UpdatePluginStatus(IServiceProvider services, string id, bool e
145145
if (enable)
146146
{
147147
var dependentPlugins = new HashSet<string>();
148-
FindPluginDependency(id, enable, ref dependentPlugins);
148+
var dependentAgentIds = new HashSet<string>();
149+
FindPluginDependency(id, enable, ref dependentPlugins, ref dependentAgentIds);
149150
var missingPlugins = dependentPlugins.Where(x => !config.EnabledPlugins.Contains(x)).ToList();
150151
if (!missingPlugins.IsNullOrEmpty())
151152
{
@@ -155,7 +156,7 @@ public PluginDef UpdatePluginStatus(IServiceProvider services, string id, bool e
155156

156157
// enable agents
157158
var agentService = services.GetRequiredService<IAgentService>();
158-
foreach (var agentId in plugin.AgentIds)
159+
foreach (var agentId in dependentAgentIds)
159160
{
160161
var agent = agentService.LoadAgent(agentId).Result;
161162
agent.Disabled = false;
@@ -189,7 +190,7 @@ public PluginDef UpdatePluginStatus(IServiceProvider services, string id, bool e
189190
return plugin;
190191
}
191192

192-
private void FindPluginDependency(string pluginId, bool enabled, ref HashSet<string> dependentPlugins)
193+
private void FindPluginDependency(string pluginId, bool enabled, ref HashSet<string> dependentPlugins, ref HashSet<string> dependentAgentIds)
193194
{
194195
var pluginDef = _plugins.FirstOrDefault(x => x.Id == pluginId);
195196
if (pluginDef == null) return;
@@ -198,6 +199,13 @@ private void FindPluginDependency(string pluginId, bool enabled, ref HashSet<str
198199
{
199200
pluginDef.Enabled = enabled;
200201
dependentPlugins.Add(pluginId);
202+
if (!pluginDef.AgentIds.IsNullOrEmpty())
203+
{
204+
foreach (var agentId in pluginDef.AgentIds)
205+
{
206+
dependentAgentIds.Add(agentId);
207+
}
208+
}
201209
}
202210

203211
var foundPlugin = _modules.FirstOrDefault(x => x.Id == pluginId);
@@ -213,7 +221,7 @@ private void FindPluginDependency(string pluginId, bool enabled, ref HashSet<str
213221

214222
foreach (var plugin in plugins)
215223
{
216-
FindPluginDependency(plugin.Id, enabled, ref dependentPlugins);
224+
FindPluginDependency(plugin.Id, enabled, ref dependentPlugins, ref dependentAgentIds);
217225
}
218226
}
219227
}

0 commit comments

Comments
 (0)