Unverified Commit 48bd7197 authored by John DiSanti's avatar John DiSanti Committed by GitHub
Browse files

Remove `enableNewCrateOrganizationScheme` codegen flag (#2507)

parent 2d8badfa
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -34,3 +34,9 @@ message = "Streaming operations now emit the request ID at the `debug` log level
references = ["smithy-rs#2495"]
meta = { "breaking" = false, "tada" = false, "bug" = true, "target" = "client"}
author = "jdisanti"

[[smithy-rs]]
message = "The `enableNewCrateOrganizationScheme` codegen flag has been removed. If you opted out of the new crate organization scheme, it must be adopted now in order to upgrade (see [the upgrade guidance](https://github.com/awslabs/smithy-rs/discussions/2449) from March 23rd's release)."
references = ["smithy-rs#2507"]
meta = { "breaking" = false, "tada" = false, "bug" = false, "target" = "client" }
author = "jdisanti"
+2 −3
Original line number Diff line number Diff line
@@ -9,7 +9,6 @@ import software.amazon.smithy.codegen.core.Symbol
import software.amazon.smithy.rust.codegen.client.smithy.ClientCodegenContext
import software.amazon.smithy.rust.codegen.client.smithy.ClientRustModule
import software.amazon.smithy.rust.codegen.client.smithy.customize.ClientCodegenDecorator
import software.amazon.smithy.rust.codegen.client.smithy.featureGatedCustomizeModule
import software.amazon.smithy.rust.codegen.client.smithy.generators.client.FluentClientCustomization
import software.amazon.smithy.rust.codegen.client.smithy.generators.client.FluentClientDocs
import software.amazon.smithy.rust.codegen.client.smithy.generators.client.FluentClientGenerator
@@ -97,12 +96,12 @@ class AwsFluentClientDecorator : ClientCodegenDecorator {
            reexportSmithyClientBuilder = false,
            generics = generics,
            customizations = listOf(
                AwsPresignedFluentBuilderMethod(codegenContext, runtimeConfig),
                AwsPresignedFluentBuilderMethod(runtimeConfig),
                AwsFluentClientDocs(codegenContext),
            ),
            retryClassifier = AwsRuntimeType.awsHttp(runtimeConfig).resolve("retry::AwsResponseRetryClassifier"),
        ).render(rustCrate)
        rustCrate.withModule(codegenContext.featureGatedCustomizeModule()) {
        rustCrate.withModule(ClientRustModule.Client.customize) {
            renderCustomizableOperationSendMethod(runtimeConfig, generics, this)
        }
        rustCrate.withModule(ClientRustModule.client) {
+9 −17
Original line number Diff line number Diff line
@@ -42,6 +42,11 @@ import software.amazon.smithy.rustsdk.AwsRuntimeType.defaultMiddleware
import software.amazon.smithy.rustsdk.traits.PresignableTrait
import kotlin.streams.toList

private val presigningTypes: List<Pair<String, Any>> = listOf(
    "PresignedRequest" to AwsRuntimeType.presigning().resolve("PresignedRequest"),
    "PresigningConfig" to AwsRuntimeType.presigning().resolve("PresigningConfig"),
)

internal enum class PayloadSigningType {
    EMPTY,
    UNSIGNED_PAYLOAD,
@@ -135,8 +140,8 @@ class AwsInputPresignedMethod(
    private val symbolProvider = codegenContext.symbolProvider

    private val codegenScope = (
        presigningTypes(codegenContext) + listOf(
            "PresignedRequestService" to AwsRuntimeType.presigning(codegenContext)
        presigningTypes + listOf(
            "PresignedRequestService" to AwsRuntimeType.presigning()
                .resolve("service::PresignedRequestService"),
            "SdkError" to RuntimeType.sdkError(runtimeConfig),
            "aws_sigv4" to AwsRuntimeType.awsSigv4(runtimeConfig),
@@ -241,12 +246,11 @@ class AwsInputPresignedMethod(
}

class AwsPresignedFluentBuilderMethod(
    codegenContext: ClientCodegenContext,
    runtimeConfig: RuntimeConfig,
) : FluentClientCustomization() {
    private val codegenScope = (
        presigningTypes(codegenContext) + arrayOf(
            "Error" to AwsRuntimeType.presigning(codegenContext).resolve("config::Error"),
        presigningTypes + arrayOf(
            "Error" to AwsRuntimeType.presigning().resolve("config::Error"),
            "SdkError" to RuntimeType.sdkError(runtimeConfig),
        )
        ).toTypedArray()
@@ -365,15 +369,3 @@ private fun RustWriter.documentPresignedMethod(hasConfigArg: Boolean) {
        """,
    )
}

private fun presigningTypes(codegenContext: ClientCodegenContext): List<Pair<String, Any>> =
    when (codegenContext.settings.codegenConfig.enableNewCrateOrganizationScheme) {
        true -> listOf(
            "PresignedRequest" to AwsRuntimeType.presigning(codegenContext).resolve("PresignedRequest"),
            "PresigningConfig" to AwsRuntimeType.presigning(codegenContext).resolve("PresigningConfig"),
        )
        else -> listOf(
            "PresignedRequest" to AwsRuntimeType.presigning(codegenContext).resolve("request::PresignedRequest"),
            "PresigningConfig" to AwsRuntimeType.presigning(codegenContext).resolve("config::PresigningConfig"),
        )
    }
+2 −12
Original line number Diff line number Diff line
@@ -6,7 +6,6 @@
package software.amazon.smithy.rustsdk

import software.amazon.smithy.codegen.core.CodegenException
import software.amazon.smithy.rust.codegen.client.smithy.ClientCodegenContext
import software.amazon.smithy.rust.codegen.core.rustlang.CargoDependency
import software.amazon.smithy.rust.codegen.core.rustlang.Visibility
import software.amazon.smithy.rust.codegen.core.smithy.RuntimeConfig
@@ -42,17 +41,8 @@ fun RuntimeConfig.awsRoot(): RuntimeCrateLocation {
}

object AwsRuntimeType {
    fun presigning(codegenContext: ClientCodegenContext): RuntimeType =
        when (codegenContext.settings.codegenConfig.enableNewCrateOrganizationScheme) {
            true -> RuntimeType.forInlineDependency(InlineAwsDependency.forRustFile("presigning", visibility = Visibility.PUBLIC))
            else -> RuntimeType.forInlineDependency(
                InlineAwsDependency.forRustFileAs(
                    file = "old_presigning",
                    moduleName = "presigning",
                    visibility = Visibility.PUBLIC,
                ),
            )
        }
    fun presigning(): RuntimeType =
        RuntimeType.forInlineDependency(InlineAwsDependency.forRustFile("presigning", visibility = Visibility.PUBLIC))

    fun RuntimeConfig.defaultMiddleware() = RuntimeType.forInlineDependency(
        InlineAwsDependency.forRustFile(
+1 −6
Original line number Diff line number Diff line
@@ -66,12 +66,7 @@ abstract class BaseRequestIdDecorator : ClientCodegenDecorator {
    ): List<BuilderCustomization> = baseCustomizations + listOf(RequestIdBuilderCustomization())

    override fun extras(codegenContext: ClientCodegenContext, rustCrate: RustCrate) {
        rustCrate.withModule(
            when (codegenContext.settings.codegenConfig.enableNewCrateOrganizationScheme) {
                true -> ClientRustModule.Operation
                else -> ClientRustModule.types
            },
        ) {
        rustCrate.withModule(ClientRustModule.Operation) {
            // Re-export RequestId in generated crate
            rust("pub use #T;", accessorTrait(codegenContext))
        }
Loading