public static void Render(IEnumerable <IRenderable?> renderables, IConsoleSettings?console) { var renderer = new ConsoleRenderer(console); foreach (var renderable in renderables) { renderer.Render(renderable); } }
public Task <int> Execute(IConfiguration configuration, IEnumerable <string> args) { if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } _registrar.RegisterInstance(typeof(IConfiguration), configuration); // Create the command model. var model = CommandModelBuilder.Build(configuration); _registrar.RegisterInstance(typeof(CommandModel), model); _registrar.RegisterDependencies(model); // Parse and map the model against the arguments. var parser = new CommandTreeParser(model); var parsedResult = parser.Parse(args); _registrar.RegisterInstance(typeof(CommandTreeParserResult), parsedResult); // Currently the root? if (parsedResult.Tree == null) { // Display help. ConsoleRenderer.Render( HelpWriter.Write(model), configuration.Settings.Console); return(Task.FromResult(0)); } // Get the command to execute. var leaf = parsedResult.Tree.GetLeafCommand(); if (leaf.Command.IsBranch || leaf.ShowHelp) { // Branches can't be executed. Show help. ConsoleRenderer.Render( HelpWriter.WriteCommand(model, leaf.Command), configuration.Settings.Console); return(Task.FromResult(leaf.ShowHelp ? 0 : 1)); } // Register the arguments with the container. _registrar.RegisterInstance(typeof(IRemainingArguments), parsedResult.Remaining); // Create the resolver and the context. var resolver = new TypeResolverAdapter(_registrar.Build()); var context = new CommandContext(parsedResult.Remaining, leaf.Command.Name, leaf.Command.Data); // Execute the command tree. return(Execute(leaf, parsedResult.Tree, context, resolver, configuration)); }
public static void Render(IRenderable?renderable, IConsoleSettings?console) { var renderer = new ConsoleRenderer(console); renderer.Render(renderable); }