/// <summary> /// Method called on command execution. /// </summary> /// <param name="app"></param> /// <param name="console"></param> /// <returns></returns> protected virtual int OnExecute(CommandLineApplication app, IConsole console) { app.Parent.Commands.Clear(); var rootCommand = app.GetRootCommandLineApplication(); using (var stream = new FileStream(OutputFile, FileMode.Create)) { using (var writer = new StreamWriter(stream, Encoding.UTF8)) { var mdGenerator = new MarkdownHelpGenerator(writer); WriteMarkdownContent(app, writer, rootCommand, mdGenerator); } } return(0); }
protected virtual int OnExecute(CommandLineApplication app, IConsole console) { app.Parent.Commands.Clear(); using (var stream = new FileStream(OutputFile, FileMode.Create)) { using (var writer = new StreamWriter(stream, Encoding.UTF8)) { writer.WriteLine("# SAKOE"); writer.WriteLine(); writer.WriteLine($"> This markdown can be generated using the command: {app.GetFullCommandLine().PrettyQuote()}."); writer.WriteLine("> "); writer.WriteLine($"> This version has been generated on {DateTime.Now:yy-MM-dd} at {DateTime.Now:HH:mm:ss}."); writer.WriteLine(); var rootCommand = app; while (rootCommand.Parent != null) { rootCommand = rootCommand.Parent; } var mdGenerator = new MarkdownHelpGenerator(writer); writer.WriteLine("## ABOUT"); writer.WriteLine(); ManCommand.GetAdditionalHelpText(mdGenerator, app.Parent, 0); writer.WriteLine(); writer.WriteLine("## TABLE OF CONTENT"); writer.WriteLine(); writer.WriteLine("- [Commands overview](#commands-overview)"); writer.WriteLine("- [About the build command](#about-the-build-command)"); WriteToc(writer, rootCommand.Commands, ""); writer.WriteLine(); writer.WriteLine("## COMMANDS OVERVIEW"); writer.WriteLine(); writer.WriteLine("| Full command line | Short description |"); writer.WriteLine("| --- | --- |"); WriteAllCommands(writer, rootCommand.Commands); writer.WriteLine(); writer.WriteLine("## ABOUT THE BUILD COMMAND"); writer.WriteLine(); BuildManCommand.GetAdditionalHelpText(mdGenerator, app.Parent, 0); writer.WriteLine(); ListCommands(mdGenerator, rootCommand.Commands); } } return(0); }
private static void ListCommands(MarkdownHelpGenerator mdGenerator, List <CommandLineApplication> subCommands) { var i = 0; foreach (var subCommand in subCommands.OrderBy(c => c.Name)) { mdGenerator.WriteOnNewLine($"## {subCommand.GetFullCommandLine().ToUpper()}"); mdGenerator.GenerateCommandHelp(subCommand); mdGenerator.WriteOnNewLine("**[\\[Go back to the table of content\\].](#table-of-content)**"); if (subCommand.Commands != null && subCommand.Commands.Count > 0) { ListCommands(mdGenerator, subCommand.Commands); } i++; } }
/// <summary> /// Writes the about section. /// </summary> /// <param name="app"></param> /// <param name="writer"></param> /// <param name="mdGenerator"></param> protected virtual void WriteAbout(CommandLineApplication app, StreamWriter writer, MarkdownHelpGenerator mdGenerator) { writer.WriteLine("## ABOUT"); writer.WriteLine(); ManCommand.WriteGenericToolUsage(mdGenerator, app.Parent, 0); writer.WriteLine(); }
/// <summary> /// Writes the markdown whole content. /// </summary> /// <param name="app"></param> /// <param name="writer"></param> /// <param name="rootCommand"></param> /// <param name="mdGenerator"></param> protected virtual void WriteMarkdownContent(CommandLineApplication app, StreamWriter writer, CommandLineApplication rootCommand, MarkdownHelpGenerator mdGenerator) { writer.WriteLine($"# {rootCommand.FullName}"); writer.WriteLine(); writer.WriteLine($"> This markdown can be generated using the command: {app.GetFullCommandLine().PrettyQuote()}."); writer.WriteLine("> "); writer.WriteLine($"> This version has been generated on {DateTime.Now:yy-MM-dd} at {DateTime.Now:HH:mm:ss}."); writer.WriteLine(); WriteAbout(app, writer, mdGenerator); WriteTableOfContent(writer, rootCommand); WriteCommandsOverview(writer, rootCommand); ListCommands(mdGenerator, rootCommand.Commands); }