private void DisplayValue()

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");
            }
        }