mirror of
https://github.com/nsnail/spectre.console.git
synced 2025-07-01 10:28:16 +08:00
Alias for command branches (#411)
This commit is contained in:
@ -0,0 +1,17 @@
|
||||
namespace Spectre.Console.Cli;
|
||||
|
||||
internal sealed class BranchConfigurator : IBranchConfigurator
|
||||
{
|
||||
public ConfiguredCommand Command { get; }
|
||||
|
||||
public BranchConfigurator(ConfiguredCommand command)
|
||||
{
|
||||
Command = command;
|
||||
}
|
||||
|
||||
public IBranchConfigurator WithAlias(string alias)
|
||||
{
|
||||
Command.Aliases.Add(alias);
|
||||
return this;
|
||||
}
|
||||
}
|
@ -48,12 +48,13 @@ internal sealed class Configurator : IUnsafeConfigurator, IConfigurator, IConfig
|
||||
return new CommandConfigurator(command);
|
||||
}
|
||||
|
||||
public void AddBranch<TSettings>(string name, Action<IConfigurator<TSettings>> action)
|
||||
public IBranchConfigurator AddBranch<TSettings>(string name, Action<IConfigurator<TSettings>> action)
|
||||
where TSettings : CommandSettings
|
||||
{
|
||||
var command = ConfiguredCommand.FromBranch<TSettings>(name);
|
||||
action(new Configurator<TSettings>(command, _registrar));
|
||||
Commands.Add(command);
|
||||
var added = Commands.AddAndReturn(command);
|
||||
return new BranchConfigurator(added);
|
||||
}
|
||||
|
||||
ICommandConfigurator IUnsafeConfigurator.AddCommand(string name, Type command)
|
||||
@ -74,7 +75,7 @@ internal sealed class Configurator : IUnsafeConfigurator, IConfigurator, IConfig
|
||||
return result;
|
||||
}
|
||||
|
||||
void IUnsafeConfigurator.AddBranch(string name, Type settings, Action<IUnsafeBranchConfigurator> action)
|
||||
IBranchConfigurator IUnsafeConfigurator.AddBranch(string name, Type settings, Action<IUnsafeBranchConfigurator> action)
|
||||
{
|
||||
var command = ConfiguredCommand.FromBranch(settings, name);
|
||||
|
||||
@ -86,6 +87,7 @@ internal sealed class Configurator : IUnsafeConfigurator, IConfigurator, IConfig
|
||||
}
|
||||
|
||||
action(configurator);
|
||||
Commands.Add(command);
|
||||
var added = Commands.AddAndReturn(command);
|
||||
return new BranchConfigurator(added);
|
||||
}
|
||||
}
|
@ -47,12 +47,13 @@ internal sealed class Configurator<TSettings> : IUnsafeBranchConfigurator, IConf
|
||||
return new CommandConfigurator(command);
|
||||
}
|
||||
|
||||
public void AddBranch<TDerivedSettings>(string name, Action<IConfigurator<TDerivedSettings>> action)
|
||||
public IBranchConfigurator AddBranch<TDerivedSettings>(string name, Action<IConfigurator<TDerivedSettings>> action)
|
||||
where TDerivedSettings : TSettings
|
||||
{
|
||||
var command = ConfiguredCommand.FromBranch<TDerivedSettings>(name);
|
||||
action(new Configurator<TDerivedSettings>(command, _registrar));
|
||||
_command.Children.Add(command);
|
||||
var added = _command.Children.AddAndReturn(command);
|
||||
return new BranchConfigurator(added);
|
||||
}
|
||||
|
||||
ICommandConfigurator IUnsafeConfigurator.AddCommand(string name, Type command)
|
||||
@ -73,7 +74,7 @@ internal sealed class Configurator<TSettings> : IUnsafeBranchConfigurator, IConf
|
||||
return result;
|
||||
}
|
||||
|
||||
void IUnsafeConfigurator.AddBranch(string name, Type settings, Action<IUnsafeBranchConfigurator> action)
|
||||
IBranchConfigurator IUnsafeConfigurator.AddBranch(string name, Type settings, Action<IUnsafeBranchConfigurator> action)
|
||||
{
|
||||
var command = ConfiguredCommand.FromBranch(settings, name);
|
||||
|
||||
@ -85,6 +86,7 @@ internal sealed class Configurator<TSettings> : IUnsafeBranchConfigurator, IConf
|
||||
}
|
||||
|
||||
action(configurator);
|
||||
_command.Children.Add(command);
|
||||
var added = _command.Children.AddAndReturn(command);
|
||||
return new BranchConfigurator(added);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user