using System.Collections.Generic; using System.IO; using System.Text; using AWSPowerShellGenerator.Generators; namespace AWSPowerShellGenerator.Writers.Help { internal class CmdletPageWriter : BasePageWriter { private readonly string _serviceName; private readonly string _moduleName; private readonly string _cmdletName; private readonly Dictionary _pageElements = new Dictionary(); public const string SynopsisElementKey = "Synopsis"; public const string DescriptionElementKey = "Description"; public const string SyntaxElementKey = "Syntax"; public const string OutputsElementKey = "Outputs"; public const string ParametersElementKey = "Parameters"; public const string CommonParametersElementKey = "CommonParameters"; public const string NotesElementKey = "Notes"; public const string ExamplesElementKey = "Examples"; public const string RelatedLinksElementKey = "RelatedLinks"; public CmdletPageWriter(GeneratorOptions options, string outputFolder, string serviceName, string moduleName, string cmdletName) : base(options, outputFolder) { this._serviceName = serviceName; this._moduleName = moduleName; this._cmdletName = cmdletName; } public void AddPageElement(string elementKey, string elementContent) { if (_pageElements.ContainsKey(elementKey)) _pageElements[elementKey] = elementContent; else _pageElements.Add(elementKey, elementContent); } public override string GetTOCID() { return this._cmdletName; } public override string GenerateFilename() { return string.Format("{0}.html", _cmdletName.Replace(' ', '_')); } protected override string GetTitle() { var serviceAbbreviation = _moduleName == "Common" ? _serviceName : _moduleName; return string.Format("{0}: {1}", serviceAbbreviation, GetName()); } protected override string GetName() { return string.Format("{0} Cmdlet", _cmdletName); } protected override string GetService() { return $"
{_serviceName}
" + GetModuleAvailability(_moduleName); } protected override string GetMetaDescription() { return _pageElements.ContainsKey(SynopsisElementKey) ? _pageElements[SynopsisElementKey] : GetTitle(); } protected override void WriteContent(TextWriter writer) { // output in the same order as Get-Help -Full AddSynopsis(writer); AddSyntax(writer); AddDescription(writer); AddParameterList(writer); AddCommonParameters(writer); AddOutputs(writer); AddNotes(writer); AddExamples(writer); AddRelatedLinks(writer); AddSupportedVersion(writer); } void AddSynopsis(TextWriter writer) { if (!_pageElements.ContainsKey(SynopsisElementKey)) return; AddSectionHeader(writer, "Synopsis"); writer.WriteLine("
{0}
", _pageElements[SynopsisElementKey]); AddSectionClosing(writer); } void AddDescription(TextWriter writer) { if (!_pageElements.ContainsKey(DescriptionElementKey)) return; AddSectionHeader(writer, "Description"); writer.WriteLine("
{0}
", _pageElements[DescriptionElementKey]); AddSectionClosing(writer); } void AddSyntax(TextWriter writer) { if (!_pageElements.ContainsKey(SyntaxElementKey)) return; AddSectionHeader(writer, "Syntax"); writer.WriteLine("
{0}
", _pageElements[SyntaxElementKey]); AddSectionClosing(writer); } void AddParameterList(TextWriter writer) { if (!_pageElements.ContainsKey(ParametersElementKey)) return; AddSectionHeader(writer, "Parameters"); writer.WriteLine("
{0}
", _pageElements[ParametersElementKey]); AddSectionClosing(writer); } void AddCommonParameters(TextWriter writer) { if (!_pageElements.ContainsKey(CommonParametersElementKey)) return; AddSectionHeader(writer, "Common Credential and Region Parameters"); writer.WriteLine("
{0}
", _pageElements[CommonParametersElementKey]); AddSectionClosing(writer); } void AddOutputs(TextWriter writer) { if (!_pageElements.ContainsKey(OutputsElementKey)) return; AddSectionHeader(writer, "Outputs"); writer.WriteLine("
{0}
", _pageElements[OutputsElementKey]); AddSectionClosing(writer); } void AddNotes(TextWriter writer) { if (!_pageElements.ContainsKey(NotesElementKey)) return; AddSectionHeader(writer, "Notes"); writer.WriteLine("
{0}
", _pageElements[NotesElementKey]); AddSectionClosing(writer); } void AddExamples(TextWriter writer) { if (!_pageElements.ContainsKey(ExamplesElementKey)) return; AddSectionHeader(writer, "Examples"); writer.WriteLine("
{0}
", _pageElements[ExamplesElementKey]); AddSectionClosing(writer); } void AddRelatedLinks(TextWriter writer) { if (!_pageElements.ContainsKey(RelatedLinksElementKey)) return; AddSectionHeader(writer, "Related Links"); writer.WriteLine("
{0}
", _pageElements[RelatedLinksElementKey]); AddSectionClosing(writer); } void AddSupportedVersion(TextWriter writer) { AddSectionHeader(writer, "Supported Version"); var sb = new StringBuilder(); sb.Append("
"); sb.Append("

AWS Tools for PowerShell: 2.x.y.z

"); sb.Append("