MegaBites-AI/Windows-powershell
0372
1// Copyright (c) Microsoft Corporation.2// Licensed under the MIT License.3 4using System.Diagnostics.CodeAnalysis; // for fxcop5 6namespace System.Management.Automation7{8 /// <summary>9 /// Stores help information related to Alias Commands.10 /// </summary>11 internal sealed class AliasHelpInfo : HelpInfo12 {13 /// <summary>14 /// Initializes a new instance of the AliasHelpInfo class.15 /// </summary>16 /// <remarks>17 /// The constructor is private. The only way to create an18 /// AliasHelpInfo object is through static method <see cref="GetHelpInfo"/>19 /// </remarks>20 [SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]21 private AliasHelpInfo(AliasInfo aliasInfo)22 {23 _fullHelpObject = new PSObject();24 25 string name = (aliasInfo.ResolvedCommand == null) ? aliasInfo.UnresolvedCommandName : aliasInfo.ResolvedCommand.Name;26 27 this.ForwardTarget = name;28 // A Cmdlet/Function/Script etc can have alias.29 this.ForwardHelpCategory = HelpCategory.Cmdlet |30 HelpCategory.Function | HelpCategory.ExternalScript | HelpCategory.ScriptCommand | HelpCategory.Filter;31 32 if (!string.IsNullOrEmpty(aliasInfo.Name))33 {34 Name = aliasInfo.Name.Trim();35 }36 37 if (!string.IsNullOrEmpty(name))38 {39 Synopsis = name.Trim();40 }41 42 _fullHelpObject.TypeNames.Clear();43 _fullHelpObject.TypeNames.Add(string.Create(Globalization.CultureInfo.InvariantCulture, $"AliasHelpInfo#{Name}"));44 _fullHelpObject.TypeNames.Add("AliasHelpInfo");45 _fullHelpObject.TypeNames.Add("HelpInfo");46 }47 48 /// <summary>49 /// Returns the name of alias help.50 /// </summary>51 /// <value>Name of alias help.</value>52 internal override string Name { get; } = string.Empty;53 54 /// <summary>55 /// Returns synopsis of alias help.56 /// </summary>57 /// <value>Synopsis of alias help.</value>58 internal override string Synopsis { get; } = string.Empty;59 60 /// <summary>61 /// Help category for alias help. This is always HelpCategory.Alias.62 /// </summary>63 /// <value>Help category for alias help</value>64 internal override HelpCategory HelpCategory65 {66 get67 {68 return HelpCategory.Alias;69 }70 }71 72 private readonly PSObject _fullHelpObject;73 74 /// <summary>75 /// Returns full help object for alias help.76 /// </summary>77 /// <value>Full help object of alias help.</value>78 internal override PSObject FullHelp79 {80 get81 {82 return _fullHelpObject;83 }84 }85 86 /// <summary>87 /// Creates an AliasHelpInfo instance based on an AliasInfo object.88 /// This is the only way to create AliasHelpInfo object from outside this class.89 /// </summary>90 /// <param name="aliasInfo">AliasInfo object for which to create AliasHelpInfo object.</param>91 /// <returns>AliasHelpInfo object.</returns>92 internal static AliasHelpInfo GetHelpInfo(AliasInfo aliasInfo)93 {94 if (aliasInfo == null)95 return null;96 97 if (aliasInfo.ResolvedCommand == null && aliasInfo.UnresolvedCommandName == null)98 return null;99 100 AliasHelpInfo aliasHelpInfo = new AliasHelpInfo(aliasInfo);101 102 if (string.IsNullOrEmpty(aliasHelpInfo.Name))103 return null;104 105 aliasHelpInfo.AddCommonHelpProperties();106 107 return aliasHelpInfo;108 }109 }110}111 