diff --git a/codegen/generic-client-test-codegen/build.gradle.kts b/codegen/generic-client-test-codegen/build.gradle.kts index da69f9602b98a..43f4301fc8003 100644 --- a/codegen/generic-client-test-codegen/build.gradle.kts +++ b/codegen/generic-client-test-codegen/build.gradle.kts @@ -13,10 +13,6 @@ * permissions and limitations under the License. */ -import software.amazon.smithy.gradle.tasks.SmithyBuild - -val smithyVersion: String by project - buildscript { val smithyVersion: String by project @@ -30,11 +26,13 @@ buildscript { } plugins { - val smithyGradleVersion: String by project - id("software.amazon.smithy").version(smithyGradleVersion) + `java-library` + id("software.amazon.smithy.gradle.smithy-base") } dependencies { + val smithyVersion: String by project + implementation("software.amazon.smithy:smithy-aws-protocol-tests:$smithyVersion") implementation("software.amazon.smithy:smithy-aws-traits:$smithyVersion") implementation(project(":smithy-aws-typescript-codegen")) @@ -42,14 +40,3 @@ dependencies { // This project doesn't produce a JAR. tasks["jar"].enabled = false - -// Run the SmithyBuild task manually since this project needs the built JAR -// from smithy-aws-typescript-codegen. -tasks["smithyBuildJar"].enabled = false - -tasks.create<SmithyBuild>("buildSdk") { - addRuntimeClasspath = true -} - -// Run the `buildSdk` automatically. -tasks["build"].finalizedBy(tasks["buildSdk"]) diff --git a/codegen/generic-client-test-codegen/model/echo.smithy b/codegen/generic-client-test-codegen/model/echo.smithy index c062557d78885..3aebff86f888d 100644 --- a/codegen/generic-client-test-codegen/model/echo.smithy +++ b/codegen/generic-client-test-codegen/model/echo.smithy @@ -6,46 +6,53 @@ use aws.protocols#restJson1 @restJson1 service EchoService { - version: "2018-05-10", - operations: [Echo, Length], + version: "2018-05-10" + operations: [ + Echo + Length + ] } -@http(code: 200, method: "POST", uri: "/echo",) +@http(code: 200, method: "POST", uri: "/echo") operation Echo { - input: EchoInput, - output: EchoOutput, - errors: [PalindromeException], + input: EchoInput + output: EchoOutput + errors: [ + PalindromeException + ] } @readonly @http(code: 200, method: "GET", uri: "/length/{string}") operation Length { - input: LengthInput, - output: LengthOutput, - errors: [PalindromeException], + input: LengthInput + output: LengthOutput + errors: [ + PalindromeException + ] } structure EchoInput { - string: String, + string: String } structure EchoOutput { - string: String, + string: String } structure LengthInput { @required @httpLabel - string: String, + string: String } structure LengthOutput { - length: Integer, + length: Integer } /// For some reason, this service does not like palindromes! @httpError(400) @error("client") structure PalindromeException { - message: String, + message: String } diff --git a/codegen/generic-client-test-codegen/model/weather.smithy b/codegen/generic-client-test-codegen/model/weather.smithy index 276d01e926515..c0839fb00b503 100644 --- a/codegen/generic-client-test-codegen/model/weather.smithy +++ b/codegen/generic-client-test-codegen/model/weather.smithy @@ -93,7 +93,7 @@ operation OnlyCustomAuthOptional {} @readonly @http(method: "GET", uri: "/SameAsService") operation SameAsService { - output := { - service: String - } + output := { + service: String + } } diff --git a/codegen/gradle.properties b/codegen/gradle.properties index 80ce77af7cf6e..59f071e4a413d 100644 --- a/codegen/gradle.properties +++ b/codegen/gradle.properties @@ -1,2 +1,2 @@ smithyVersion=1.45.0 -smithyGradleVersion=0.6.0 +smithyGradleVersion=0.10.1 diff --git a/codegen/protocol-test-codegen/build.gradle.kts b/codegen/protocol-test-codegen/build.gradle.kts index 9cb3eaca52c06..2c41840240232 100644 --- a/codegen/protocol-test-codegen/build.gradle.kts +++ b/codegen/protocol-test-codegen/build.gradle.kts @@ -13,10 +13,6 @@ * permissions and limitations under the License. */ -import software.amazon.smithy.gradle.tasks.SmithyBuild - -val smithyVersion: String by project - buildscript { val smithyVersion: String by project @@ -30,25 +26,16 @@ buildscript { } plugins { - val smithyGradleVersion: String by project - id("software.amazon.smithy").version(smithyGradleVersion) + `java-library` + id("software.amazon.smithy.gradle.smithy-base") } dependencies { + val smithyVersion: String by project + + smithyBuild(project(":smithy-aws-typescript-codegen")) implementation("software.amazon.smithy:smithy-aws-protocol-tests:$smithyVersion") - implementation(project(":smithy-aws-typescript-codegen")) } // This project doesn't produce a JAR. tasks["jar"].enabled = false - -// Run the SmithyBuild task manually since this project needs the built JAR -// from smithy-aws-typescript-codegen. -tasks["smithyBuildJar"].enabled = false - -tasks.create<SmithyBuild>("buildSdk") { - addRuntimeClasspath = true -} - -// Run the `buildSdk` automatically. -tasks["build"].finalizedBy(tasks["buildSdk"]) diff --git a/codegen/sdk-codegen/build.gradle.kts b/codegen/sdk-codegen/build.gradle.kts index 57eb849925781..a0ec7c8e89769 100644 --- a/codegen/sdk-codegen/build.gradle.kts +++ b/codegen/sdk-codegen/build.gradle.kts @@ -15,12 +15,9 @@ import software.amazon.smithy.model.Model import software.amazon.smithy.model.shapes.ServiceShape -import software.amazon.smithy.model.shapes.ShapeId import software.amazon.smithy.model.node.Node -import software.amazon.smithy.gradle.tasks.SmithyBuild import software.amazon.smithy.aws.traits.ServiceTrait import java.util.stream.Stream -import kotlin.streams.toList val smithyVersion: String by project @@ -38,8 +35,8 @@ buildscript { } plugins { - val smithyGradleVersion: String by project - id("software.amazon.smithy").version(smithyGradleVersion) + `java-library` + id("software.amazon.smithy.gradle.smithy-base") } dependencies { @@ -48,18 +45,8 @@ dependencies { implementation("software.amazon.smithy:smithy-smoke-test-traits:$smithyVersion") } -// This project doesn't produce a JAR. -tasks["jar"].enabled = false - -// Run the SmithyBuild task manually since this project needs the built JAR -// from smithy-aws-typescript-codegen. -tasks["smithyBuildJar"].enabled = false - -tasks.create<SmithyBuild>("buildSdk") { - addRuntimeClasspath = true -} - -configure<software.amazon.smithy.gradle.SmithyExtension> { +smithy { + format.set(false) val clientNameProp: String? by project if (!(clientNameProp?.isEmpty() ?: true)) { smithyBuildConfigs = files("smithy-build-" + clientNameProp + ".json") @@ -67,6 +54,9 @@ configure<software.amazon.smithy.gradle.SmithyExtension> { } } +// This project doesn't produce a JAR. +tasks["jar"].enabled = false + // Generates a smithy-build.json file by creating a new projection for every // JSON file found in aws-models/. The generated smithy-build.json file is // not committed to git since it's rebuilt each time codegen is performed. @@ -101,7 +91,7 @@ tasks.register("generate-smithy-build") { val clientName = sdkId.split("-").toTypedArray() .map { it.capitalize() } .joinToString(separator = " ") - var manifestOverwrites = Node.parse( + val manifestOverwrites = Node.parse( File("smithy-aws-typescript-codegen/src/main/resources/software/amazon/smithy/aws/typescript/codegen/package.json.template") .readText() ).expectObjectNode() @@ -150,7 +140,5 @@ tasks.register("generate-default-configs-provider", JavaExec::class) { args(listOf(project.properties["defaultsModeConfigOutput"])) } -// Run the `buildSdk` automatically. -tasks["build"] - .dependsOn(tasks["generate-smithy-build"]) - .finalizedBy(tasks["buildSdk"]) +// Ensure the smithy-build.json file is generated before smithy build is executed +tasks["smithyBuild"].dependsOn(tasks["generate-smithy-build"]) diff --git a/codegen/settings.gradle.kts b/codegen/settings.gradle.kts index 1bc44fa3ec790..f20b6d8fd9694 100644 --- a/codegen/settings.gradle.kts +++ b/codegen/settings.gradle.kts @@ -35,3 +35,18 @@ file( .filter { it.isDirectory } .forEach { includeBuild(it.absolutePath) } } + +pluginManagement { + val smithyGradleVersion: String by settings + + plugins { + id("software.amazon.smithy.gradle.smithy-jar").version(smithyGradleVersion) + id("software.amazon.smithy.gradle.smithy-base").version(smithyGradleVersion) + } + + repositories { + mavenLocal() + mavenCentral() + gradlePluginPortal() + } +} diff --git a/codegen/smithy-aws-typescript-codegen/build.gradle.kts b/codegen/smithy-aws-typescript-codegen/build.gradle.kts index cf6bb338d78cf..b45d44bf9b81c 100644 --- a/codegen/smithy-aws-typescript-codegen/build.gradle.kts +++ b/codegen/smithy-aws-typescript-codegen/build.gradle.kts @@ -20,8 +20,6 @@ description = "Generates TypeScript code for AWS protocols from Smithy models" extra["displayName"] = "Smithy :: AWS :: Typescript :: Codegen" extra["moduleName"] = "software.amazon.smithy.aws.typescript.codegen" -val smithyVersion: String by project - buildscript { val smithyVersion: String by project @@ -35,6 +33,8 @@ buildscript { } dependencies { + val smithyVersion: String by project + api("software.amazon.smithy:smithy-aws-cloudformation-traits:$smithyVersion") api("software.amazon.smithy:smithy-aws-traits:$smithyVersion") api("software.amazon.smithy:smithy-aws-endpoints:$smithyVersion") @@ -49,16 +49,16 @@ dependencies { tasks.register("set-aws-sdk-versions") { doLast { mkdir("$buildDir/generated/resources/software/amazon/smithy/aws/typescript/codegen") - var versionsFile = + val versionsFile = file("$buildDir/generated/resources/software/amazon/smithy/aws/typescript/codegen/sdkVersions.properties") - var roots = project.file("../../packages").listFiles().toMutableList() + project.file("../../clients").listFiles().toList() + val roots = project.file("../../packages").listFiles().toMutableList() + project.file("../../clients").listFiles().toList() roots.forEach { packageDir -> - var packageJsonFile = File(packageDir, "package.json") + val packageJsonFile = File(packageDir, "package.json") if (packageJsonFile.isFile()) { - var packageJson = Node.parse(packageJsonFile.readText()).expectObjectNode() - var packageName = packageJson.expectStringMember("name").getValue() - var packageVersion = packageJson.expectStringMember("version").getValue() - var isPrivate = packageJson.getBooleanMemberOrDefault("private", false) + val packageJson = Node.parse(packageJsonFile.readText()).expectObjectNode() + val packageName = packageJson.expectStringMember("name").getValue() + val packageVersion = packageJson.expectStringMember("version").getValue() + val isPrivate = packageJson.getBooleanMemberOrDefault("private", false) if (!isPrivate) { versionsFile.appendText("$packageName=$packageVersion\n") }