private void AddCommandList(Document doc, CommandGroup group) { ParagraphStyle style = new ParagraphStyle { Indent = 3, Tabs = new[] { 22 } }; // TODO - add option to show ALL commands/groups const bool showHidden = false; var commands = GetExpandedCommandNodes(group, showHidden) .Select(x => new { x.Node, x.Depth, Verb = VerbPath(x.Node, x.Depth - 1) }); foreach (var entry in commands.OrderBy(x => x.Verb)) { if (entry.Node.Hidden) { continue; } var para = doc.AddParagraph(new Paragraph(style)); // TODO - highlight the command by setting span style? para.AddSpan(new Span(entry.Verb)); para.AddTab(); if (!string.IsNullOrEmpty(entry.Node.Summary)) { para.AddSpan(new Span(entry.Node.Summary)); } } }
private void AddName(Command command, Document doc, ParagraphStyle headerStyle) { var para = doc.AddParagraph(new Paragraph(headerStyle)); para.AddSpan("NAME"); // TODO - rather than drawing dashes, make the prior span a different color or some such para = doc.AddParagraph(new Paragraph()); para.AddSpan("----"); para = doc.AddParagraph(new Paragraph()); para.AddSpan(VerbPath(command)); para.AddSpan("-"); para.AddSpan(command.Summary); }
private void AddSynopsis(Command command, Document doc, ParagraphStyle headerStyle) { var para = doc.AddParagraph(new Paragraph(headerStyle)); para.AddSpan("SYNOPSIS"); para = doc.AddParagraph(new Paragraph()); para.AddSpan("--------"); para = doc.AddParagraph(new Paragraph()); para.AddSpan(VerbPath(command)); foreach (var named in command.NamedParameters) { para.AddSpan(named.Usage); } // TODO - pick up any positional parameters on prior verbs foreach (var pos in command.PositionalParameters) { para.AddSpan(pos.Usage); } }
private Document GroupHelp(CommandGroup group) { Document doc = new Document(); var para = doc.AddParagraph(new Paragraph(new ParagraphStyle { LinesAfter = 1 })); para.AddSpan("usage: " + VerbPath(group)); AddNamed(para, group.NamedParameters); // TODO - include --help! if (group.Nodes.Any()) { para.AddSpan("<command>"); } if (group.Nodes.Any(x => x.PositionalParameters.Any())) { para.AddSpan("[<args>]"); } // TODO - add usage // TODO - add overall command description // TODO - include "Help" in the command list! AddCommandList(doc, group); // TODO - add help blurb if (group.Nodes.Any()) { var p = doc.AddParagraph(new Paragraph(new ParagraphStyle { LinesBefore = 1 })); var helpVerb = "help"; // TODO - pull from settings! p.AddSpan("See '{0} {1} <command>' to read about a specific subcommand.", VerbPath(group), helpVerb); } return doc; }
private void AddOptions(Command command, Document doc, ParagraphStyle headerStyle) { var para = doc.AddParagraph(new Paragraph(headerStyle)); para.AddSpan("OPTIONS"); para = doc.AddParagraph(new Paragraph()); para.AddSpan("-------"); var descStyle = new ParagraphStyle { Indent = 3, LinesAfter = 1 }; foreach (var named in command.NamedParameters) { para = doc.AddParagraph(new Paragraph()); para.AddSpan(named.Usage); foreach (var p in MarkLeft.Parse(named.Description, descStyle)) { doc.AddParagraph(p); } } // TODO - add positional parameters from prior verbs foreach (var pos in command.PositionalParameters) { para = doc.AddParagraph(new Paragraph()); para.AddSpan(pos.Usage); foreach (var p in MarkLeft.Parse(pos.Description, descStyle)) { doc.AddParagraph(p); } } }