コード例 #1
0
        /// <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);
        }
コード例 #2
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);
        }
コード例 #3
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++;
            }
        }
コード例 #4
0
 /// <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();
 }
コード例 #5
0
        /// <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);
        }