blob: 1cb0741ca6503660e74d5dac5e81992a03d66e16 [file] [log] [blame]
apply plugin: 'base'
final boolean isTeamcityBuild = System.getenv("TEAMCITY_VERSION") != null
// kotlin/libraries/tools/kotlin-stdlib-docs -> kotlin
final String kotlinRootDir = rootProject.file("../../../").absolutePath.replace('\\', '/')
final String kotlinLibsDir = "$buildDir/libs"
final String githubRevision = isTeamcityBuild ? project.property("githubRevision") : "master"
final String kotlinVersion = isTeamcityBuild ? project.property("deployVersion") : defaultSnapshotVersion(kotlinRootDir)
final String repo = isTeamcityBuild ? project.property("kotlinLibsRepo") : "$kotlinRootDir/build/repo"
def defaultSnapshotVersion(String kotlinRootDir) {
file("$kotlinRootDir/gradle.properties").newInputStream().with {
final def props = new Properties()
props.load(it)
return Objects.requireNonNull(props.get("defaultSnapshotVersion")) as String
}
}
println("# Extracting info:")
println(" isTeamcityBuild: $isTeamcityBuild")
println(" githubRevision: $githubRevision")
println(" kotlinVersion: $kotlinVersion")
println(" repo: $repo")
repositories {
maven { url = repo }
mavenCentral()
}
final List<String> modules = [
"kotlin-stdlib",
"kotlin-stdlib-common",
"kotlin-stdlib-jdk7",
"kotlin-stdlib-jdk8",
"kotlin-stdlib-js",
"kotlin-test",
"kotlin-test-js",
"kotlin-test-junit5",
"kotlin-test-junit",
"kotlin-test-testng",
]
task extractLibs() { }
modules.forEach { module ->
final String lib = "kotlin_lib_$module"
final Configuration lib_src = configurations.create(lib)
if (module == "kotlin-test-js" || module == "kotlin-stdlib-js") {
lib_src.attributes {
attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage, "kotlin-runtime"))
attribute(Attribute.of("org.jetbrains.kotlin.js.compiler", String), "ir")
}
}
if (module == "kotlin-stdlib-common") {
lib_src.attributes {
attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage, "kotlin-api"))
attribute(Attribute.of("org.jetbrains.kotlin.platform.type", String), "common")
}
}
dependencies {
"$lib"(group: 'org.jetbrains.kotlin', name: module, version: kotlinVersion)
}
final Task libsTask = tasks.create("extract_lib_$module", Sync) {
dependsOn lib_src
from { lib_src }
into "$kotlinLibsDir/$module"
}
extractLibs.dependsOn libsTask
}
project.extensions.github_revision = githubRevision
project.extensions.kotlin_root = kotlinRootDir
project.extensions.kotlin_libs = kotlinLibsDir
// TODO: Eliminate this workaround when KT-52977 gets fixed in the Kotlin compiler used in Dokka
final List<File> enumsToComment = [
"$kotlinRootDir/libraries/stdlib/jdk7/src/kotlin/io/path/PathWalkOption.kt",
"$kotlinRootDir/libraries/stdlib/jdk7/src/kotlin/io/path/CopyActionResult.kt",
"$kotlinRootDir/libraries/stdlib/jdk7/src/kotlin/io/path/OnErrorResult.kt",
"$kotlinRootDir/libraries/stdlib/src/kotlin/io/encoding/Base64.kt",
].collect { new File(it) }
project.extensions.commentOutSinceKotlinForNewEnums = {
for (file in enumsToComment) {
final List<String> lines = file.readLines()
for (def i = 0; i < lines.size() - 1; i++) {
if (lines[i].trim().startsWith("@SinceKotlin") && lines[i + 1].contains("enum")) {
lines[i] = "//" + lines[i]
}
}
file.write(String.join("\n", lines))
}
}
project.extensions.uncommentSinceKotlinForNewEnums = {
for (file in enumsToComment) {
final List<String> lines = file.readLines()
for (def i = 0; i < lines.size(); i++) {
if (lines[i].startsWith("//") && lines[i].contains("@SinceKotlin")) {
lines[i] = lines[i].substring(2)
}
}
file.write(String.join("\n", lines))
}
}