public static CreationResultStatus DisplayAliasValues(IEngineEnvironmentSettings environment, INewCommandInput commandInput, AliasRegistry aliasRegistry, string commandName) { IReadOnlyDictionary <string, string> aliasesToShow; if (!string.IsNullOrEmpty(commandInput.ShowAliasesAliasName)) { if (aliasRegistry.AllAliases.TryGetValue(commandInput.ShowAliasesAliasName, out string aliasValue)) { aliasesToShow = new Dictionary <string, string>() { { commandInput.ShowAliasesAliasName, aliasValue } }; } else { Reporter.Output.WriteLine(string.Format(LocalizableStrings.AliasShowErrorUnknownAlias, commandInput.ShowAliasesAliasName, commandName)); return(CreationResultStatus.InvalidParamValues); } } else { aliasesToShow = aliasRegistry.AllAliases; Reporter.Output.WriteLine(LocalizableStrings.AliasShowAllAliasesHeader); } HelpFormatter <KeyValuePair <string, string> > formatter = new HelpFormatter <KeyValuePair <string, string> >(environment, aliasesToShow, 2, '-', false) .DefineColumn(t => t.Key, LocalizableStrings.AliasName) .DefineColumn(t => t.Value, LocalizableStrings.AliasValue); Reporter.Output.WriteLine(formatter.Layout()); return(CreationResultStatus.Success); }
internal static CreationResultStatus DisplayAliasValues(IEngineEnvironmentSettings environment, INewCommandInput commandInput, AliasRegistry aliasRegistry, string commandName) { IReadOnlyDictionary <string, IReadOnlyList <string> > aliasesToShow; if (!string.IsNullOrEmpty(commandInput.ShowAliasesAliasName)) { if (aliasRegistry.AllAliases.TryGetValue(commandInput.ShowAliasesAliasName, out IReadOnlyList <string> aliasValue)) { aliasesToShow = new Dictionary <string, IReadOnlyList <string> >() { { commandInput.ShowAliasesAliasName, aliasValue } }; } else { Reporter.Output.WriteLine(string.Format(LocalizableStrings.AliasShowErrorUnknownAlias, commandInput.ShowAliasesAliasName, commandName)); return(CreationResultStatus.InvalidParamValues); } } else { aliasesToShow = aliasRegistry.AllAliases; Reporter.Output.WriteLine(LocalizableStrings.AliasShowAllAliasesHeader); } HelpFormatter <KeyValuePair <string, IReadOnlyList <string> > > formatter = new HelpFormatter <KeyValuePair <string, IReadOnlyList <string> > >( environment, commandInput, aliasesToShow, columnPadding: 2, headerSeparator: '-', blankLineBetweenRows: false) .DefineColumn(t => t.Key, LocalizableStrings.AliasName, showAlways: true) .DefineColumn(t => string.Join(" ", t.Value), LocalizableStrings.AliasValue, showAlways: true); Reporter.Output.WriteLine(formatter.Layout()); return(CreationResultStatus.Success); }
private void ParameterHelp(IParameterSet allParams, string additionalInfo, HashSet <string> hiddenParams) { if (!string.IsNullOrEmpty(additionalInfo)) { Reporter.Error.WriteLine(additionalInfo.Bold().Red()); Reporter.Output.WriteLine(); } IEnumerable <ITemplateParameter> filteredParams = FilterParamsForHelp(allParams, hiddenParams); if (filteredParams.Any()) { HelpFormatter <ITemplateParameter> formatter = new HelpFormatter <ITemplateParameter>(EnvironmentSettings, filteredParams, 2, null, true); formatter.DefineColumn( param => { // the key is guaranteed to exist IList <string> variants = _app.CanonicalToVariantsTemplateParamMap[param.Name]; string options = string.Join("|", variants.Reverse()); return(" " + options); }, LocalizableStrings.Options ); formatter.DefineColumn(delegate(ITemplateParameter param) { StringBuilder displayValue = new StringBuilder(255); displayValue.AppendLine(param.Documentation); if (string.Equals(param.DataType, "choice", StringComparison.OrdinalIgnoreCase)) { int longestChoiceLength = param.Choices.Keys.Max(x => x.Length); foreach (KeyValuePair <string, string> choiceInfo in param.Choices) { displayValue.Append(" " + choiceInfo.Key.PadRight(longestChoiceLength + 4)); displayValue.AppendLine("- " + choiceInfo.Value); } } else { displayValue.Append(param.DataType ?? "string"); displayValue.AppendLine(" - " + param.Priority.ToString()); } // display the configured value if there is one string configuredValue = null; if (allParams.ResolvedValues.TryGetValue(param, out object resolvedValueObject)) { string resolvedValue = resolvedValueObject as string; if (!string.IsNullOrEmpty(resolvedValue) && !string.IsNullOrEmpty(param.DefaultValue) && !string.Equals(param.DefaultValue, resolvedValue)) { configuredValue = resolvedValue; } } if (string.IsNullOrEmpty(configuredValue)) { // this will catch when the user inputs the default value. The above deliberately skips it on the resolved values. if (string.Equals(param.DataType, "bool", StringComparison.OrdinalIgnoreCase) && _app.TemplateParamHasValue(param.Name) && string.IsNullOrEmpty(_app.TemplateParamValue(param.Name))) { configuredValue = "true"; } else { _app.AllTemplateParams.TryGetValue(param.Name, out configuredValue); } } if (!string.IsNullOrEmpty(configuredValue)) { displayValue.AppendLine(string.Format(LocalizableStrings.ConfiguredValue, configuredValue)); } // display the default value if there is one if (!string.IsNullOrEmpty(param.DefaultValue)) { displayValue.AppendLine(string.Format(LocalizableStrings.DefaultValue, param.DefaultValue)); } return(displayValue.ToString()); }, string.Empty); Reporter.Output.WriteLine(formatter.Layout()); } else { Reporter.Output.WriteLine(LocalizableStrings.NoParameters); } }
private void DisplayTemplateList(bool showAll = false) { IReadOnlyCollection <ITemplateInfo> results = null; try { if (showAll) { results = PerformAllTemplatesInContextQueryAsync().Result.Where(x => x.IsMatch).Select(x => x.Info).ToList(); if (results.Count == 0) { results = PerformAllTemplatesInContextQueryAsync().Result.Select(x => x.Info).ToList(); } } else { results = _matchedTemplates.Where(x => x.IsMatch).Select(x => x.Info).ToList(); if (results.Count == 0) { results = _matchedTemplates.Select(x => x.Info).ToList(); } } } catch (TemplateAuthoringException tae) { Reporter.Error.WriteLine(tae.Message.Bold().Red()); return; } IEnumerable <IGrouping <string, ITemplateInfo> > grouped = results.GroupBy(x => x.GroupIdentity); EnvironmentSettings.Host.TryGetHostParamDefault("prefs:language", out string defaultLanguage); Dictionary <ITemplateInfo, string> templatesVersusLanguages = new Dictionary <ITemplateInfo, string>(); foreach (IGrouping <string, ITemplateInfo> grouping in grouped) { List <string> languages = new List <string>(); foreach (ITemplateInfo info in grouping) { if (info.Tags != null && info.Tags.TryGetValue("language", out string lang)) { if (string.IsNullOrEmpty(Language) && string.Equals(defaultLanguage, lang, StringComparison.OrdinalIgnoreCase)) { lang = $"[{lang}]"; } languages.Add(lang); } } templatesVersusLanguages[grouping.First()] = string.Join(", ", languages); } HelpFormatter <KeyValuePair <ITemplateInfo, string> > formatter = HelpFormatter.For(EnvironmentSettings, templatesVersusLanguages, 6, '-', false) .DefineColumn(t => t.Key.Name, LocalizableStrings.Templates) .DefineColumn(t => t.Key.ShortName, LocalizableStrings.ShortName) .DefineColumn(t => t.Value, out object languageColumn, LocalizableStrings.Language) .DefineColumn(t => t.Key.Classifications != null ? string.Join("/", t.Key.Classifications) : null, out object tagsColumn, LocalizableStrings.Tags) .OrderByDescending(languageColumn, new NullOrEmptyIsLastStringComparer()) .OrderBy(tagsColumn); Reporter.Output.WriteLine(formatter.Layout()); if (!IsListFlagSpecified) { ShowInvocationExamples(); } }