smithy-rs/rust-runtime/build.gradle.kts

75 lines
2.0 KiB
Plaintext

/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0
*/
description = "Rust Runtime"
plugins {
kotlin("jvm")
`maven-publish`
}
group = "software.amazon.rustruntime"
version = "0.0.3"
java {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
tasks.jar {
from("./") {
include("inlineable/src/")
include("inlineable/Cargo.toml")
}
}
val properties = PropertyRetriever(rootProject, project)
val outputDir = layout.buildDirectory.dir("smithy-rs")
val runtimeOutputDir = outputDir.get().dir("rust-runtime")
tasks["assemble"].apply {
dependsOn("copyRuntimeCrates")
dependsOn("fixRuntimeCrateVersions")
dependsOn("fixManifests")
}
tasks.register<Copy>("copyRuntimeCrates") {
from("$rootDir/rust-runtime") {
CrateSet.ENTIRE_SMITHY_RUNTIME.forEach { include("${it.name}/**") }
}
exclude("**/target")
exclude("**/Cargo.lock")
exclude("**/node_modules")
into(runtimeOutputDir)
}
tasks.register("fixRuntimeCrateVersions") {
dependsOn("copyRuntimeCrates")
doLast {
CrateSet.ENTIRE_SMITHY_RUNTIME.forEach { module ->
patchFile(runtimeOutputDir.file("${module.name}/Cargo.toml").asFile) { line ->
rewriteRuntimeCrateVersion(properties.get(module.versionPropertyName)!!, line)
}
}
}
}
tasks.register<ExecRustBuildTool>("fixManifests") {
description = "Run the publisher tool's `fix-manifests` sub-command on the runtime crates"
toolPath = rootProject.projectDir.resolve("tools/ci-build/publisher")
binaryName = "publisher"
arguments = listOf("fix-manifests", "--location", runtimeOutputDir.asFile.absolutePath)
dependsOn("fixRuntimeCrateVersions")
}
publishing {
publications {
create<MavenPublication>("default") {
from(components["java"])
}
}
repositories { maven { url = uri(layout.buildDirectory.dir("repository")) } }
}