diff --git a/runtime/runtime-core/common/src/aws/smithy/kotlin/runtime/config/EnvironmentSetting.kt b/runtime/runtime-core/common/src/aws/smithy/kotlin/runtime/config/EnvironmentSetting.kt index e5dda44f68..a2ceeba27e 100644 --- a/runtime/runtime-core/common/src/aws/smithy/kotlin/runtime/config/EnvironmentSetting.kt +++ b/runtime/runtime-core/common/src/aws/smithy/kotlin/runtime/config/EnvironmentSetting.kt @@ -68,3 +68,21 @@ public inline fun <reified T : Enum<T>> enumEnvSetting(sysProp: String, envVar: } return EnvironmentSetting(parse, sysProp, envVar) } + +@InternalApi +public inline fun <reified T : Enum<T>> enumSetEnvSetting(sysProp: String, envVar: String): EnvironmentSetting<Set<T>?> { + val parse = { strValue: String -> + strValue.split(",") + .map { it.trim() } + .filter { it.isNotEmpty() } + .map { enumValue -> + enumValues<T>() + .firstOrNull { it.name.equals(enumValue, ignoreCase = true) } + ?: throw ClientException( + "Value $enumValue is not supported, should be one of ${enumValues<T>().joinToString(", ")}", + ) + } + .toSet() + } + return EnvironmentSetting(parse, sysProp, envVar) +}