protected virtual void AddAdditionalArguments(ICommand command) { if (command.TreatUnmatchedTokensAsErrors) { return; } HelpSection.Write(this, AdditionalArguments.Title, AdditionalArguments.Description); }
/// <summary> /// Writes the usage summary for the supplied <see cref="command"/> /// </summary> /// <param name="command"></param> protected virtual void AddUsage(ICommand command) { var usage = new List <string>(); IEnumerable <ICommand> subcommands; if (command is Command cmd) { subcommands = cmd .RecurseWhileNotNull(c => c.Parents .OfType <Command>() .FirstOrDefault()) .Reverse(); } else { subcommands = Enumerable.Empty <ICommand>(); } foreach (var subcommand in subcommands) { usage.Add(subcommand.Name); if (subcommand != command) { usage.Add(FormatArgumentUsage(subcommand.Arguments.ToArray())); } } var hasOptionHelp = command.Children .OfType <IOption>() .Any(ShouldShowHelp); if (hasOptionHelp) { usage.Add(Usage.Options); } usage.Add(FormatArgumentUsage(command.Arguments.ToArray())); var hasCommandHelp = command.Children .OfType <ICommand>() .Any(ShouldShowHelp); if (hasCommandHelp) { usage.Add(Usage.Command); } if (!command.TreatUnmatchedTokensAsErrors) { usage.Add(Usage.AdditionalArguments); } HelpSection.Write(this, Usage.Title, string.Join(" ", usage.Where(u => !string.IsNullOrWhiteSpace(u)))); }
/// <summary> /// Writes the help content of the <see cref="Command"/> subcommands, if any, /// for the supplied <see cref="command"/> /// </summary> /// <param name="command"></param> protected virtual void AddSubcommands(ICommand command) { var subcommands = command .Children .OfType <ICommand>() .Where(ShouldShowHelp) .ToArray(); HelpSection.Write(this, Commands.Title, subcommands, GetOptionHelpItems); }
/// <summary> /// Writes the <see cref="Option"/> help content, if any, /// for the supplied <see cref="command"/> /// </summary> /// <param name="command"></param> protected virtual void AddOptions(ICommand command) { var options = command .Children .OfType <IOption>() .Where(ShouldShowHelp) .ToArray(); HelpSection.Write(this, Options.Title, options, GetOptionHelpItems); }
/// <summary> /// Writes a summary, if configured, for the supplied <see cref="command"/> /// </summary> /// <param name="command"></param> protected virtual void AddSynopsis(ICommand command) { if (!ShouldShowHelp(command)) { return; } var title = $"{command.Name}:"; HelpSection.Write(this, title, command.Description); }
/// <summary> /// Writes the arguments, if any, for the supplied <see cref="command"/> /// </summary> /// <param name="command"></param> protected virtual void AddArguments(ICommand command) { var commands = new List <ICommand>(); if (command is Command cmd && cmd.Parents.FirstOrDefault() is ICommand parent && ShouldDisplayArgumentHelp(parent)) { commands.Add(parent); } if (ShouldDisplayArgumentHelp(command)) { commands.Add(command); } HelpSection.Write(this, Arguments.Title, commands, GetArgumentHelpItems); }