in src/AWS.Deploy.Orchestration/OptionSettingHandler.cs [285:346]
public bool IsOptionSettingDisplayable(Recommendation recommendation, OptionSettingItem optionSetting)
{
if (!optionSetting.DependsOn.Any())
{
return true;
}
foreach (var dependency in optionSetting.DependsOn)
{
var dependsOnOptionSetting = GetOptionSetting(recommendation, dependency.Id);
var dependsOnOptionSettingValue = GetOptionSettingValue(recommendation, dependsOnOptionSetting);
if (
dependsOnOptionSetting != null)
{
if (dependsOnOptionSettingValue == null)
{
if (dependency.Operation == null ||
dependency.Operation == PropertyDependencyOperationType.Equals)
{
if (dependency.Value != null)
return false;
}
else if (dependency.Operation == PropertyDependencyOperationType.NotEmpty)
{
return false;
}
}
else
{
if (dependency.Operation == null ||
dependency.Operation == PropertyDependencyOperationType.Equals)
{
if (!dependsOnOptionSettingValue.Equals(dependency.Value))
return false;
}
else if (dependency.Operation == PropertyDependencyOperationType.NotEmpty)
{
if (dependsOnOptionSetting.Type == OptionSettingValueType.List &&
dependsOnOptionSettingValue.TryDeserialize<SortedSet<string>>(out var listValue) &&
listValue != null &&
!listValue.Any())
{
return false;
}
else if (dependsOnOptionSetting.Type == OptionSettingValueType.KeyValue &&
dependsOnOptionSettingValue.TryDeserialize<Dictionary<string, string>>(out var keyValue) &&
keyValue != null &&
!keyValue.Any())
{
return false;
}
else if (string.IsNullOrEmpty(dependsOnOptionSettingValue?.ToString()))
{
return false;
}
}
}
}
}
return true;
}