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 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", "kotlin-test-common", ] 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") } } 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 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", ].collect { new File(it) } project.extensions.commentOutSinceKotlinForNewEnums = { for (file in enumsToComment) { final List lines = file.readLines() for (def i = 0; i < lines.size(); i++) { if (lines[i].startsWith("@SinceKotlin")) { lines[i] = "//" + lines[i] } } file.write(String.join("\n", lines)) } } project.extensions.uncommentSinceKotlinForNewEnums = { for (file in enumsToComment) { final List lines = file.readLines() for (def i = 0; i < lines.size(); i++) { if (lines[i].startsWith("//@SinceKotlin")) { lines[i] = lines[i].substring(2) } } file.write(String.join("\n", lines)) } }