in src/AWS.Deploy.CLI/Commands/DeployCommand.cs [822:872]
private void DisplayValue(Recommendation recommendation, OptionSettingItem optionSetting, int optionSettingNumber, int optionSettingsCount, Type? typeHintResponseType, DisplayOptionSettingsMode mode)
{
object? displayValue = null;
Dictionary<string, string>? keyValuePair = null;
Dictionary<string, object>? objectValues = null;
if (typeHintResponseType != null)
{
var methodInfo = typeof(Recommendation)
.GetMethod(nameof(Recommendation.GetOptionSettingValue), 1, new[] { typeof(OptionSettingItem) });
var genericMethodInfo = methodInfo?.MakeGenericMethod(typeHintResponseType);
var response = genericMethodInfo?.Invoke(recommendation, new object[] { optionSetting });
displayValue = ((IDisplayable?)response)?.ToDisplayString();
}
else
{
var value = recommendation.GetOptionSettingValue(optionSetting);
objectValues = value as Dictionary<string, object>;
keyValuePair = value as Dictionary<string, string>;
displayValue = objectValues == null && keyValuePair == null ? value : string.Empty;
}
if (mode == DisplayOptionSettingsMode.Editable)
{
_toolInteractiveService.WriteLine($"{optionSettingNumber.ToString().PadRight(optionSettingsCount.ToString().Length)}. {optionSetting.Name}: {displayValue}");
}
else if (mode == DisplayOptionSettingsMode.Readonly)
{
_toolInteractiveService.WriteLine($"{optionSetting.Name}: {displayValue}");
}
if (keyValuePair != null)
{
foreach (var (key, value) in keyValuePair)
{
_toolInteractiveService.WriteLine($"\t{key}: {value}");
}
}
if (objectValues != null)
{
var displayableValues = new Dictionary<string, object>();
foreach (var child in optionSetting.ChildOptionSettings)
{
if (!objectValues.ContainsKey(child.Id))
continue;
displayableValues.Add(child.Name, objectValues[child.Id]);
}
_consoleUtilities.DisplayValues(displayableValues, "\t");
}
}