performed an Exterminatus on code that doesnt work with the new Delegate system.
This commit is contained in:
@@ -32,7 +32,7 @@ namespace Torch.Commands
|
|||||||
private int? _requiredParamCount;
|
private int? _requiredParamCount;
|
||||||
private static readonly Logger Log = LogManager.GetCurrentClassLogger();
|
private static readonly Logger Log = LogManager.GetCurrentClassLogger();
|
||||||
|
|
||||||
public Command(string name, string description, CommandAction action, ITorchPlugin plugin, MyPromoteLevel? minimumPromoteLevel = null, string helpText = null)
|
public Command(string name, string description, CommandAction action, ITorchPlugin plugin, MyPromoteLevel? minimumPromoteLevel = null, string helpText = null, int requiredParamCount = 0)
|
||||||
{
|
{
|
||||||
HelpText = helpText;
|
HelpText = helpText;
|
||||||
Action = action;
|
Action = action;
|
||||||
@@ -46,34 +46,11 @@ namespace Torch.Commands
|
|||||||
|
|
||||||
Path.AddRange(split);
|
Path.AddRange(split);
|
||||||
|
|
||||||
var commandMethod = action.Method;
|
|
||||||
|
|
||||||
_method = commandMethod;
|
|
||||||
Module = commandMethod.DeclaringType;
|
|
||||||
|
|
||||||
//parameters
|
|
||||||
_parameters = commandMethod.GetParameters();
|
|
||||||
|
|
||||||
var sb = new StringBuilder();
|
var sb = new StringBuilder();
|
||||||
sb.Append($"!{string.Join(" ", Path)} ");
|
sb.Append($"!{string.Join(" ", Path)} ");
|
||||||
for (var i = 0; i < _parameters.Length; i++)
|
|
||||||
{
|
|
||||||
var param = _parameters[i];
|
|
||||||
|
|
||||||
if (param.HasDefaultValue)
|
_requiredParamCount = requiredParamCount;
|
||||||
{
|
Log.Debug($"Params: ({_requiredParamCount} required)");
|
||||||
_requiredParamCount = _requiredParamCount ?? i;
|
|
||||||
|
|
||||||
sb.Append($"[{param.ParameterType.Name} {param.Name}] ");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
sb.Append($"<{param.ParameterType.Name} {param.Name}> ");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
_requiredParamCount = _requiredParamCount ?? _parameters.Length;
|
|
||||||
Log.Debug($"Params: {_parameters.Length} ({_requiredParamCount} required)");
|
|
||||||
SyntaxHelp = sb.ToString();
|
SyntaxHelp = sb.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -136,11 +113,14 @@ namespace Torch.Commands
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
var invokeByAction = Action != null;
|
||||||
var parameters = new object[_parameters.Length];
|
var parameters = new object[_parameters.Length];
|
||||||
|
|
||||||
if (context.Args.Count < _requiredParamCount)
|
if (context.Args.Count < _requiredParamCount)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
if (!invokeByAction)
|
||||||
|
{
|
||||||
//Convert args from string
|
//Convert args from string
|
||||||
for (var i = 0; i < _parameters.Length && i < context.Args.Count; i++)
|
for (var i = 0; i < _parameters.Length && i < context.Args.Count; i++)
|
||||||
{
|
{
|
||||||
@@ -157,16 +137,15 @@ namespace Torch.Commands
|
|||||||
parameters[i] = _parameters[i].DefaultValue;
|
parameters[i] = _parameters[i].DefaultValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Action != null)
|
|
||||||
{
|
|
||||||
Action.Invoke(context, parameters);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
var moduleInstance = (CommandModule)Activator.CreateInstance(Module);
|
var moduleInstance = (CommandModule)Activator.CreateInstance(Module);
|
||||||
moduleInstance.Context = context;
|
moduleInstance.Context = context;
|
||||||
_method.Invoke(moduleInstance, parameters);
|
_method.Invoke(moduleInstance, parameters);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Action.Invoke(context, parameters);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
context.Respond(e.Message, "Error", MyFontEnum.Red);
|
context.Respond(e.Message, "Error", MyFontEnum.Red);
|
||||||
|
Reference in New Issue
Block a user