| 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)) |
| } |
| } |