/* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0 */ description = "Generates Rust/Typescript code from Smithy models and runs the protocol tests" extra["displayName"] = "Smithy :: Rust :: Codegen :: Server :: Typescript :: Test" extra["moduleName"] = "software.amazon.smithy.rust.kotlin.codegen.server.typescript.test" tasks["jar"].enabled = false plugins { java id("software.amazon.smithy.gradle.smithy-base") id("software.amazon.smithy.gradle.smithy-jar") } val smithyVersion: String by project val defaultRustDocFlags: String by project val properties = PropertyRetriever(rootProject, project) val buildDir = layout.buildDirectory.get().asFile val pluginName = "rust-server-codegen-typescript" val workingDirUnderBuildDir = "smithyprojections/codegen-server-test-typescript/" configure { outputDirectory = layout.buildDirectory.dir(workingDirUnderBuildDir).get().asFile } dependencies { implementation(project(":codegen-server:typescript")) implementation("software.amazon.smithy:smithy-aws-protocol-tests:$smithyVersion") implementation("software.amazon.smithy:smithy-protocol-test-traits:$smithyVersion") implementation("software.amazon.smithy:smithy-aws-traits:$smithyVersion") } val allCodegenTests = "../../codegen-core/common-test-models".let { commonModels -> listOf( CodegenTest("com.amazonaws.simple#SimpleService", "simple", imports = listOf("$commonModels/simple.smithy")), CodegenTest("com.aws.example.ts#PokemonService", "pokemon-service-server-sdk"), ) } project.registerGenerateSmithyBuildTask(rootProject, pluginName, allCodegenTests) project.registerGenerateCargoWorkspaceTask(rootProject, pluginName, allCodegenTests, workingDirUnderBuildDir) project.registerGenerateCargoConfigTomlTask(buildDir.resolve(workingDirUnderBuildDir)) tasks["smithyBuild"].dependsOn("generateSmithyBuild") tasks["assemble"].finalizedBy("generateCargoWorkspace") project.registerModifyMtimeTask() project.registerCargoCommandsTasks(buildDir.resolve(workingDirUnderBuildDir), defaultRustDocFlags) tasks["test"].finalizedBy(cargoCommands(properties).map { it.toString }) tasks["clean"].doFirst { delete("smithy-build.json") }