in src/Commands/CommandFactory.cs [385:417]
private static Dictionary<string, IBaseCommand> CreateCommmandDictionary(CommandGroup node, string prefix)
{
var aggregated = new Dictionary<string, IBaseCommand>();
var updatedPrefix = GetPrefix(prefix, node.Name);
if (node.Commands != null)
{
foreach (var kvp in node.Commands)
{
var key = GetPrefix(updatedPrefix, kvp.Key);
aggregated.Add(key, kvp.Value);
}
}
if (node.SubGroup == null)
{
return aggregated;
}
foreach (var command in node.SubGroup)
{
var childPrefix = GetPrefix(updatedPrefix, command.Name);
var subcommandsDictionary = CreateCommmandDictionary(command, updatedPrefix);
foreach (var item in subcommandsDictionary)
{
aggregated.Add(item.Key, item.Value);
}
}
return aggregated;
}