in src/AWS.Deploy.CLI/Commands/DeployCommand.cs [808:869]
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;
SortedSet<string>? listValues = null;
if (typeHintResponseType != null)
{
var methodInfo = typeof(IOptionSettingHandler)
.GetMethod(nameof(IOptionSettingHandler.GetOptionSettingValue), 1, new[] { typeof(Recommendation), typeof(OptionSettingItem) });
var genericMethodInfo = methodInfo?.MakeGenericMethod(typeHintResponseType);
var response = genericMethodInfo?.Invoke(_optionSettingHandler, new object[] { recommendation, optionSetting });
displayValue = ((IDisplayable?)response)?.ToDisplayString();
}
if (displayValue == null)
{
var value = _optionSettingHandler.GetOptionSettingValue(recommendation, optionSetting);
objectValues = value as Dictionary<string, object>;
keyValuePair = value as Dictionary<string, string>;
listValues = value as SortedSet<string>;
displayValue = objectValues == null && keyValuePair == null && listValues == 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 (listValues != null)
{
foreach (var value in listValues)
{
_toolInteractiveService.WriteLine($"\t{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");
}
}