internal override IEnumerable <HelpInfo> ExactMatchHelp(HelpRequest helpRequest) { CommandInfo commandInfo = null; try { commandInfo = this._commandDiscovery.LookupCommandInfo(helpRequest.Target); } catch (CommandNotFoundException) { } if ((commandInfo != null) && (commandInfo.CommandType == CommandTypes.Alias)) { AliasInfo aliasInfo = (AliasInfo)commandInfo; HelpInfo helpInfo = AliasHelpInfo.GetHelpInfo(aliasInfo); if (helpInfo != null) { yield return(helpInfo); goto Label_PostSwitchInIterator; } } yield break; Label_PostSwitchInIterator :; }
/// <summary> /// Exact match an alias help target. /// </summary> /// <remarks> /// This will /// a. use _commandDiscovery object to retrieve AliasInfo object. /// b. Create AliasHelpInfo object based on AliasInfo object /// </remarks> /// <param name="helpRequest">Help request object.</param> /// <returns>Help info found.</returns> internal override IEnumerable <HelpInfo> ExactMatchHelp(HelpRequest helpRequest) { CommandInfo commandInfo = null; try { commandInfo = _commandDiscovery.LookupCommandInfo(helpRequest.Target); } catch (CommandNotFoundException) { // CommandNotFoundException is expected here if target doesn't match any // commandlet. Just ignore this exception and bail out. } if ((commandInfo != null) && (commandInfo.CommandType == CommandTypes.Alias)) { AliasInfo aliasInfo = (AliasInfo)commandInfo; HelpInfo helpInfo = AliasHelpInfo.GetHelpInfo(aliasInfo); if (helpInfo != null) { yield return(helpInfo); } } }
internal static AliasHelpInfo GetHelpInfo(AliasInfo aliasInfo) { if (aliasInfo == null) { return null; } if ((aliasInfo.ResolvedCommand == null) && (aliasInfo.UnresolvedCommandName == null)) { return null; } AliasHelpInfo info = new AliasHelpInfo(aliasInfo); if (string.IsNullOrEmpty(info.Name)) { return null; } info.AddCommonHelpProperties(); return info; }
internal static AliasHelpInfo GetHelpInfo(AliasInfo aliasInfo) { if (aliasInfo == null) { return(null); } if ((aliasInfo.ResolvedCommand == null) && (aliasInfo.UnresolvedCommandName == null)) { return(null); } AliasHelpInfo info = new AliasHelpInfo(aliasInfo); if (string.IsNullOrEmpty(info.Name)) { return(null); } info.AddCommonHelpProperties(); return(info); }
internal override IEnumerable <HelpInfo> ExactMatchHelp( HelpRequest helpRequest) { using (AliasHelpProvider.tracer.TraceMethod()) { CommandInfo commandInfo = (CommandInfo)null; try { commandInfo = this._commandDiscovery.LookupCommandInfo(helpRequest.Target); } catch (CommandNotFoundException ex) { } if (commandInfo != null && commandInfo.CommandType == CommandTypes.Alias) { AliasInfo aliasInfo = (AliasInfo)commandInfo; HelpInfo helpInfo = (HelpInfo)AliasHelpInfo.GetHelpInfo(aliasInfo); if (helpInfo != null) { yield return(helpInfo); } } } }
/// <summary> /// Search an alias help target. /// </summary> /// <remarks> /// This will, /// a. use _sessionState object to get a list of alias that match the target. /// b. for each alias, retrieve help info as in ExactMatchHelp. /// </remarks> /// <param name="helpRequest">Help request object.</param> /// <param name="searchOnlyContent"> /// If true, searches for pattern in the help content. Individual /// provider can decide which content to search in. /// /// If false, searches for pattern in the command names. /// </param> /// <returns>A IEnumerable of helpinfo object.</returns> internal override IEnumerable <HelpInfo> SearchHelp(HelpRequest helpRequest, bool searchOnlyContent) { // aliases do not have help content...so doing nothing in that case if (!searchOnlyContent) { string target = helpRequest.Target; string pattern = target; Hashtable hashtable = new Hashtable(StringComparer.OrdinalIgnoreCase); if (!WildcardPattern.ContainsWildcardCharacters(target)) { pattern += "*"; } WildcardPattern matcher = WildcardPattern.Get(pattern, WildcardOptions.IgnoreCase); IDictionary <string, AliasInfo> aliasTable = _sessionState.Internal.GetAliasTable(); foreach (string name in aliasTable.Keys) { if (matcher.IsMatch(name)) { HelpRequest exactMatchHelpRequest = helpRequest.Clone(); exactMatchHelpRequest.Target = name; // Duplicates?? foreach (HelpInfo helpInfo in ExactMatchHelp(exactMatchHelpRequest)) { // Component/Role/Functionality match is done only for SearchHelp // as "get-help * -category alias" should not forwad help to // CommandHelpProvider..(ExactMatchHelp does forward help to // CommandHelpProvider) if (!Match(helpInfo, helpRequest)) { continue; } if (hashtable.ContainsKey(name)) { continue; } hashtable.Add(name, null); yield return(helpInfo); } } } CommandSearcher searcher = new CommandSearcher( pattern, SearchResolutionOptions.ResolveAliasPatterns, CommandTypes.Alias, _context); while (searcher.MoveNext()) { CommandInfo current = ((IEnumerator <CommandInfo>)searcher).Current; if (_context.CurrentPipelineStopping) { yield break; } AliasInfo alias = current as AliasInfo; if (alias != null) { string name = alias.Name; HelpRequest exactMatchHelpRequest = helpRequest.Clone(); exactMatchHelpRequest.Target = name; // Duplicates?? foreach (HelpInfo helpInfo in ExactMatchHelp(exactMatchHelpRequest)) { // Component/Role/Functionality match is done only for SearchHelp // as "get-help * -category alias" should not forwad help to // CommandHelpProvider..(ExactMatchHelp does forward help to // CommandHelpProvider) if (!Match(helpInfo, helpRequest)) { continue; } if (hashtable.ContainsKey(name)) { continue; } hashtable.Add(name, null); yield return(helpInfo); } } } foreach (CommandInfo current in ModuleUtils.GetMatchingCommands(pattern, _context, helpRequest.CommandOrigin)) { if (_context.CurrentPipelineStopping) { yield break; } AliasInfo alias = current as AliasInfo; if (alias != null) { string name = alias.Name; HelpInfo helpInfo = AliasHelpInfo.GetHelpInfo(alias); if (hashtable.ContainsKey(name)) { continue; } hashtable.Add(name, null); yield return(helpInfo); } } } }
/// <summary> /// Creates an AliasHelpInfo instance based on an AliasInfo object. /// This is the only way to create AliasHelpInfo object from outside this class. /// </summary> /// <param name="aliasInfo">AliasInfo object for which to create AliasHelpInfo object.</param> /// <returns>AliasHelpInfo object.</returns> internal static AliasHelpInfo GetHelpInfo(AliasInfo aliasInfo) { if (aliasInfo == null) return null; if (aliasInfo.ResolvedCommand == null && aliasInfo.UnresolvedCommandName == null) return null; AliasHelpInfo aliasHelpInfo = new AliasHelpInfo(aliasInfo); if (String.IsNullOrEmpty(aliasHelpInfo.Name)) return null; aliasHelpInfo.AddCommonHelpProperties(); return aliasHelpInfo; }
internal override IEnumerable <HelpInfo> SearchHelp(HelpRequest helpRequest, bool searchOnlyContent) { if (!searchOnlyContent) { string target = helpRequest.Target; string pattern = target; Hashtable iteratorVariable2 = new Hashtable(StringComparer.OrdinalIgnoreCase); if (!WildcardPattern.ContainsWildcardCharacters(target)) { pattern = pattern + "*"; } WildcardPattern iteratorVariable3 = new WildcardPattern(pattern, WildcardOptions.IgnoreCase); IDictionary <string, AliasInfo> aliasTable = this._sessionState.Internal.GetAliasTable(); foreach (string iteratorVariable5 in aliasTable.Keys) { if (iteratorVariable3.IsMatch(iteratorVariable5)) { HelpRequest iteratorVariable6 = helpRequest.Clone(); iteratorVariable6.Target = iteratorVariable5; foreach (HelpInfo iteratorVariable7 in this.ExactMatchHelp(iteratorVariable6)) { if (!Match(iteratorVariable7, helpRequest) || iteratorVariable2.ContainsKey(iteratorVariable5)) { continue; } iteratorVariable2.Add(iteratorVariable5, null); yield return(iteratorVariable7); } } } CommandSearcher iteratorVariable8 = new CommandSearcher(pattern, SearchResolutionOptions.ResolveAliasPatterns, CommandTypes.Alias, this._context); while (iteratorVariable8.MoveNext()) { CommandInfo current = iteratorVariable8.Current; if (this._context.CurrentPipelineStopping) { goto Label_0423; } AliasInfo iteratorVariable10 = current as AliasInfo; if (iteratorVariable10 != null) { string name = iteratorVariable10.Name; HelpRequest iteratorVariable12 = helpRequest.Clone(); iteratorVariable12.Target = name; foreach (HelpInfo iteratorVariable13 in this.ExactMatchHelp(iteratorVariable12)) { if (!Match(iteratorVariable13, helpRequest) || iteratorVariable2.ContainsKey(name)) { continue; } iteratorVariable2.Add(name, null); yield return(iteratorVariable13); } } } foreach (CommandInfo iteratorVariable14 in ModuleUtils.GetMatchingCommands(pattern, this._context, helpRequest.CommandOrigin, false)) { if (this._context.CurrentPipelineStopping) { break; } AliasInfo aliasInfo = iteratorVariable14 as AliasInfo; if (aliasInfo != null) { string key = aliasInfo.Name; HelpInfo helpInfo = AliasHelpInfo.GetHelpInfo(aliasInfo); if (!iteratorVariable2.ContainsKey(key)) { iteratorVariable2.Add(key, null); yield return(helpInfo); } } } } Label_0423: yield break; }