generated/runtime/BuildTime/Cmdlets/ExportHelpMarkdown.cs

/*---------------------------------------------------------------------------------------------
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/
using System;
using System.Linq;
using System.Management.Automation;
using static Commvault.Powershell.Runtime.PowerShell.MarkdownRenderer;

namespace Commvault.Powershell.Runtime.PowerShell
{
  [Cmdlet(VerbsData.Export, "HelpMarkdown")]
  [DoNotExport]
  public class ExportHelpMarkdown : PSCmdlet
  {
    [Parameter(Mandatory = true)]
    [ValidateNotNullOrEmpty]
    public PSModuleInfo ModuleInfo { get; set; }

    [Parameter(Mandatory = true)]
    [ValidateNotNullOrEmpty]
    public PSObject[] FunctionInfo { get; set; }

    [Parameter(Mandatory = true)]
    [ValidateNotNullOrEmpty]
    public PSObject[] HelpInfo { get; set; }

    [Parameter(Mandatory = true)]
    [ValidateNotNullOrEmpty]
    public string DocsFolder { get; set; }

    [Parameter(Mandatory = true)]
    [ValidateNotNullOrEmpty]
    public string ExamplesFolder { get; set; }

    protected override void ProcessRecord()
    {
      try
      {
        var helpInfos = HelpInfo.Select(hi => hi.ToPsHelpInfo());
        var variantGroups = FunctionInfo.Select(fi => fi.BaseObject).Cast<FunctionInfo>()
            .Join(helpInfos, fi => fi.Name, phi => phi.CmdletName, (fi, phi) => fi.ToVariants(phi))
            .Select(va => new VariantGroup(ModuleInfo.Name, va.First().CmdletName, va, String.Empty));
        WriteMarkdowns(variantGroups, ModuleInfo.ToModuleInfo(), DocsFolder, ExamplesFolder);
      }
      catch (Exception ee)
      {
        Console.WriteLine($"${ee.GetType().Name}/{ee.StackTrace}");
        throw ee;
      }
    }
  }
}