Merge pull request #393 from iceljc/features/enable-plugin-by-dependency
enable plugin by dependency
This commit is contained in:
commit
2dfd2f192b
|
|
@ -144,9 +144,12 @@ public class PluginLoader
|
||||||
var config = db.GetPluginConfig();
|
var config = db.GetPluginConfig();
|
||||||
if (enable)
|
if (enable)
|
||||||
{
|
{
|
||||||
if (!config.EnabledPlugins.Exists(x => x == id))
|
var dependentPlugins = new HashSet<string>();
|
||||||
|
FindPluginDependency(id, enable, ref dependentPlugins);
|
||||||
|
var missingPlugins = dependentPlugins.Where(x => !config.EnabledPlugins.Contains(x)).ToList();
|
||||||
|
if (!missingPlugins.IsNullOrEmpty())
|
||||||
{
|
{
|
||||||
config.EnabledPlugins.Add(id);
|
config.EnabledPlugins.AddRange(missingPlugins);
|
||||||
db.SavePluginConfig(config);
|
db.SavePluginConfig(config);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -186,6 +189,36 @@ public class PluginLoader
|
||||||
return plugin;
|
return plugin;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void FindPluginDependency(string pluginId, bool enabled, ref HashSet<string> dependentPlugins)
|
||||||
|
{
|
||||||
|
var pluginDef = _plugins.FirstOrDefault(x => x.Id == pluginId);
|
||||||
|
if (pluginDef == null) return;
|
||||||
|
|
||||||
|
if (!pluginDef.IsCore)
|
||||||
|
{
|
||||||
|
pluginDef.Enabled = enabled;
|
||||||
|
dependentPlugins.Add(pluginId);
|
||||||
|
}
|
||||||
|
|
||||||
|
var foundPlugin = _modules.FirstOrDefault(x => x.Id == pluginId);
|
||||||
|
if (foundPlugin == null) return;
|
||||||
|
|
||||||
|
var attr = foundPlugin.GetType().GetCustomAttribute<PluginDependencyAttribute>();
|
||||||
|
if (attr != null && !attr.PluginNames.IsNullOrEmpty())
|
||||||
|
{
|
||||||
|
foreach (var name in attr.PluginNames)
|
||||||
|
{
|
||||||
|
var plugins = _plugins.Where(x => x.Assembly == name).ToList();
|
||||||
|
if (plugins.IsNullOrEmpty()) return;
|
||||||
|
|
||||||
|
foreach (var plugin in plugins)
|
||||||
|
{
|
||||||
|
FindPluginDependency(plugin.Id, enabled, ref dependentPlugins);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public string GetSummaryComment(Type member)
|
public string GetSummaryComment(Type member)
|
||||||
{
|
{
|
||||||
string summary = string.Empty;
|
string summary = string.Empty;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue