override fun renderInitializers()

in codegen/smithy-aws-swift-codegen/src/main/kotlin/software/amazon/smithy/aws/swift/codegen/AWSServiceConfig.kt [26:78]


    override fun renderInitializers(serviceSymbol: Symbol) {
        val awsConfigFields = otherRuntimeConfigProperties()
        writer.openBlock("public init(", ") throws {") {
            awsConfigFields.forEach {
                writer.write("${it.memberName}: \$D, ", it.type)
            }
            writer.write("runtimeConfig: \$N", ClientRuntimeTypes.Core.SDKRuntimeConfiguration)
        }
        writer.indent()
        writer.openBlock("if let region = region {", "} else {") {
            writer.write("self.region = region")
            writer.write("self.regionResolver = nil")
            writer.write("self.signingRegion = signingRegion ?? region")
        }
        writer.indent()
        writer.write("let resolvedRegionResolver = regionResolver ?? DefaultRegionResolver()")
        writer.write("let region = resolvedRegionResolver.resolveRegion()")
        writer.write("self.region = region")
        writer.write("self.regionResolver = resolvedRegionResolver")
        writer.write("self.signingRegion = signingRegion ?? region")
        writer.dedent()
        writer.write("}")
        writer.write("self.endpointResolver = endpointResolver ?? DefaultEndpointResolver()")
        writer.openBlock("if let credProvider = credentialsProvider {", "} else {") {
            writer.write("self.credentialsProvider = try \$N.fromCustom(credProvider)", AWSClientRuntimeTypes.Core.AWSCredentialsProvider)
        }
        writer.indent().write("self.credentialsProvider = try \$N.fromChain()", AWSClientRuntimeTypes.Core.AWSCredentialsProvider)
        writer.dedent().write("}")
        writer.write("self.frameworkMetadata = frameworkMetadata")
        val runtimeTimeConfigFields = sdkRuntimeConfigProperties()
        runtimeTimeConfigFields.forEach {
            writer.write("self.${it.memberName} = runtimeConfig.${it.memberName}")
        }
        writer.dedent().write("}")
        writer.write("")

        writer.openBlock("public convenience init(", ") throws {") {

            awsConfigFields.forEachIndexed { index, configField ->
                val terminator = if (index != awsConfigFields.lastIndex) ", " else ""
                writer.write("${configField.memberName}: \$D$terminator", configField.type)
            }
        }

        var configParamValues = ""
        awsConfigFields.forEach {
            configParamValues += "${it.memberName}: ${it.memberName}, "
        }
        writer.indent()
        writer.write("let defaultRuntimeConfig = try \$N(\"${serviceName}\")", ClientRuntimeTypes.Core.DefaultSDKRuntimeConfiguration)
        writer.write("try self.init(${configParamValues}runtimeConfig: defaultRuntimeConfig)")
        writer.dedent().write("}")
    }