public virtual ExitCode Execute(ITaskInteraction interaction) { interaction.Loggers[LoggerType.Result].WriteLine(WriteStyle.Fixed, this.generalHelp); interaction.Loggers[LoggerType.Result].WriteLine(); Table table = Table.Create(1, 1, 2); table.AddRow(XTaskStrings.OverviewColumn1, XTaskStrings.OverviewColumn2, XTaskStrings.OverviewColumn3); foreach (var entry in registry.Tasks) { if (entry.Task.GetAttributes <HiddenAttribute>(inherit: true).Any()) { continue; } string[] aliases = entry.Aliases.ToArray(); if (aliases.Length == 0) { continue; } ITaskDocumentation docs = entry.Task as ITaskDocumentation; table.AddRow( aliases[0], aliases.Length == 1 ? String.Empty : String.Join(", ", aliases.Skip(1)), docs == null || docs.Summary == null ? String.Empty : docs.Summary); } interaction.Loggers[LoggerType.Result].Write(table); return(ExitCode.Success); }
/// <summary> /// Outputs usage if any help is provided /// </summary> public static void OutputUsage(this ITask task, ITaskInteraction interaction) { ITaskDocumentation documentation = task.GetService <ITaskDocumentation>(); if (documentation == null) { interaction.Loggers[LoggerType.Result].WriteLine(WriteStyle.Fixed, XTaskStrings.HelpNone); } else { documentation.GetUsage(interaction); } }
public void HelpOutputsUsage() { IArgumentProvider arguments = Substitute.For <IArgumentProvider>(); ITaskRegistry taskRegistry = Substitute.For <ITaskRegistry>(); ITaskDocumentation docs = Substitute.For <ITaskDocumentation>(); ITask task = Substitute.For <ITask>(); task.GetService <ITaskDocumentation>().Returns(docs); arguments.Command.Returns("HelpOutputsUsage"); arguments.HelpRequested.Returns(true); taskRegistry["HelpOutputsUsage"].Returns(task); TaskExecution execution = Substitute.ForPartsOf <TaskExecution>(arguments, taskRegistry, null); execution.ExecuteTask(); docs.Received(1).GetUsage(Arg.Any <ITaskInteraction>()); }