Added InternalActionOption in ICommandAction interface.
Updated ConsoleUtilities and removed obsolete functions.
This commit is contained in:
@@ -1,5 +1,8 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using PluginManager.Others;
|
||||
using PluginManager.Others.Actions;
|
||||
|
||||
namespace PluginManager.Interfaces;
|
||||
|
||||
@@ -11,6 +14,8 @@ public interface ICommandAction
|
||||
|
||||
public string? Usage { get; }
|
||||
|
||||
public IEnumerable<InternalActionOption> ListOfOptions { get; }
|
||||
|
||||
public InternalActionRunType RunType { get; }
|
||||
|
||||
public Task Execute(string[]? args);
|
||||
|
||||
@@ -62,7 +62,13 @@ internal class Loader
|
||||
{
|
||||
try
|
||||
{
|
||||
var plugin = (T)Activator.CreateInstance(type);
|
||||
var plugin = (T?)Activator.CreateInstance(type);
|
||||
|
||||
if (plugin is null)
|
||||
{
|
||||
throw new Exception($"Failed to create instance of plugin with type {type.FullName} [{type.Assembly}]");
|
||||
}
|
||||
|
||||
var pluginType = plugin switch
|
||||
{
|
||||
DBEvent => PluginType.EVENT,
|
||||
@@ -70,6 +76,7 @@ internal class Loader
|
||||
DBSlashCommand => PluginType.SLASH_COMMAND,
|
||||
_ => PluginType.UNKNOWN
|
||||
};
|
||||
|
||||
OnPluginLoaded?.Invoke(new PluginLoadResultData(type.FullName, pluginType, true, plugin: plugin));
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
@@ -51,6 +51,8 @@ public class PluginsManager
|
||||
OperatingSystem.IsMacOS() ? OSType.MACOSX : OSType.NONE;
|
||||
|
||||
return result.FindAll(pl => (pl.SupportedOS & currentOS) != 0);
|
||||
|
||||
|
||||
}
|
||||
|
||||
public async Task<PluginOnlineInfo?> GetPluginDataByName(string pluginName)
|
||||
|
||||
20
PluginManager/Others/Actions/InternalActionOption.cs
Normal file
20
PluginManager/Others/Actions/InternalActionOption.cs
Normal file
@@ -0,0 +1,20 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace PluginManager.Others.Actions
|
||||
{
|
||||
public class InternalActionOption
|
||||
{
|
||||
public string OptionName { get; set; }
|
||||
public string OptionDescription { get; set; }
|
||||
|
||||
public InternalActionOption(string optionName, string optionDescription)
|
||||
{
|
||||
OptionName = optionName;
|
||||
OptionDescription = optionDescription;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -11,6 +11,8 @@ namespace PluginManager.Others
|
||||
public T0 Item0 { get; }
|
||||
public T1 Item1 { get; }
|
||||
|
||||
public object? Value => Item0 != null ? Item0 : Item1;
|
||||
|
||||
public OneOf(T0 item0)
|
||||
{
|
||||
Item0 = item0;
|
||||
@@ -36,6 +38,11 @@ namespace PluginManager.Others
|
||||
{
|
||||
return Item0 != null ? item0(Item0) : item1(Item1);
|
||||
}
|
||||
|
||||
public Type GetActualType()
|
||||
{
|
||||
return Item0 != null ? Item0.GetType() : Item1.GetType();
|
||||
}
|
||||
}
|
||||
|
||||
public class OneOf<T0, T1, T2>
|
||||
|
||||
@@ -18,9 +18,4 @@
|
||||
<ItemGroup>
|
||||
<UpToDateCheckInput Remove="UI\Controls\MessageBox.axaml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Spectre.Console">
|
||||
<HintPath>..\..\..\.nuget\packages\spectre.console\0.47.0\lib\net7.0\Spectre.Console.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
Reference in New Issue
Block a user