internal static void ShowTemplateGroupHelp(IReadOnlyCollection <ITemplateMatchInfo> templateGroup, IEngineEnvironmentSettings environmentSettings, INewCommandInput commandInput, IHostSpecificDataLoader hostDataLoader, TemplateCreator templateCreator, bool showImplicitlyHiddenParams = false) { if (templateGroup.Count == 0 || !TemplateResolver.AreAllTemplatesSameGroupIdentity(templateGroup)) { return; } IReadOnlyList <ITemplateInfo> templateInfoList = templateGroup.Select(x => x.Info).ToList(); TemplateGroupParameterDetails?groupParameterDetails = DetermineParameterDispositionsForTemplateGroup(templateInfoList, environmentSettings, commandInput, hostDataLoader, templateCreator); if (groupParameterDetails != null) { if (!string.IsNullOrEmpty(groupParameterDetails.Value.AdditionalInfo)) { Reporter.Error.WriteLine(groupParameterDetails.Value.AdditionalInfo.Bold().Red()); Reporter.Error.WriteLine(); return; } // get the input params valid for any param in the group IReadOnlyDictionary <string, string> inputTemplateParams = CoalesceInputParameterValuesFromTemplateGroup(templateGroup); ShowTemplateDetailHeaders(templateInfoList); ShowParameterHelp(inputTemplateParams, showImplicitlyHiddenParams, groupParameterDetails.Value, environmentSettings, commandInput); } else { Reporter.Error.WriteLine(string.Format(LocalizableStrings.MissingTemplateContentDetected, commandInput.CommandName).Bold().Red()); } }