summaryrefslogtreecommitdiff
path: root/plugins/kotlin/util/project-model-updater/src/org/jetbrains/tools/model/updater/kotlincLibraries.kt
blob: eeee357cd26efef14e13ef9d0f28c011434172c4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package org.jetbrains.tools.model.updater

import org.jetbrains.tools.model.updater.impl.*

const val ktGroup = "org.jetbrains.kotlin"

fun generateKotlincLibraries(kotlincArtifactsMode: KotlincArtifactsMode, version: String, isCommunity: Boolean): List<JpsLibrary> {
    return listOf(
        kotlincForIdeWithStandardNaming("kotlinc.allopen-compiler-plugin", version),
        kotlincForIdeWithStandardNaming("kotlinc.android-extensions-compiler-plugin", version),
        kotlincForIdeWithStandardNaming("kotlinc.high-level-api-fir-tests", version),
        kotlincForIdeWithStandardNaming("kotlinc.high-level-api-fir", version),
        kotlincForIdeWithStandardNaming("kotlinc.high-level-api", version),
        kotlincForIdeWithStandardNaming("kotlinc.high-level-api-impl-base", version),
        kotlincForIdeWithStandardNaming("kotlinc.high-level-api-impl-base-tests", version),
        kotlincForIdeWithStandardNaming("kotlinc.analysis-api-providers", version),
        kotlincForIdeWithStandardNaming("kotlinc.analysis-project-structure", version),
        kotlincForIdeWithStandardNaming("kotlinc.symbol-light-classes", version),
        kotlincForIdeWithStandardNaming("kotlinc.incremental-compilation-impl-tests", version),
        kotlincForIdeWithStandardNaming("kotlinc.kotlin-build-common-tests", version),
        kotlincForIdeWithStandardNaming("kotlinc.kotlin-compiler-cli", version),
        kotlincForIdeWithStandardNaming("kotlinc.kotlin-compiler-testdata", version, includeSources = false),
        kotlincForIdeWithStandardNaming("kotlinc.kotlin-compiler-tests", version),
        kotlincForIdeWithStandardNaming("kotlinc.kotlin-compiler", version),
        kotlincForIdeWithStandardNaming("kotlinc.kotlin-compiler-common", version),
        kotlincForIdeWithStandardNaming("kotlinc.kotlin-compiler-fe10", version),
        kotlincForIdeWithStandardNaming("kotlinc.kotlin-compiler-fir", version),
        kotlincForIdeWithStandardNaming("kotlinc.kotlin-compiler-ir", version),
        kotlincForIdeWithStandardNaming("kotlinc.kotlin-dist", version),
        kotlincForIdeWithStandardNaming("kotlinc.kotlin-gradle-statistics", version),
        kotlincForIdeWithStandardNaming("kotlinc.kotlin-stdlib-minimal-for-test", version),
        kotlincForIdeWithStandardNaming("kotlinc.kotlinx-serialization-compiler-plugin", version),
        kotlincForIdeWithStandardNaming("kotlinc.lombok-compiler-plugin", version),
        kotlincForIdeWithStandardNaming("kotlinc.low-level-api-fir", version),
        kotlincForIdeWithStandardNaming("kotlinc.noarg-compiler-plugin", version),
        kotlincForIdeWithStandardNaming("kotlinc.parcelize-compiler-plugin", version),
        kotlincForIdeWithStandardNaming("kotlinc.sam-with-receiver-compiler-plugin", version),
        singleJarMvnLib("kotlinc.compiler-components-for-jps", "$ktGroup:compiler-components-for-jps:$version", transitive = false),
        singleJarMvnLib("kotlinc.kotlin-scripting-common", "$ktGroup:kotlin-scripting-common:$version", transitive = false),
        singleJarMvnLib("kotlinc.kotlin-scripting-compiler-impl", "$ktGroup:kotlin-scripting-compiler-impl:$version", transitive = false),
        singleJarMvnLib("kotlinc.kotlin-scripting-compiler", "$ktGroup:kotlin-scripting-compiler:$version", transitive = false),
        singleJarMvnLib("kotlinc.kotlin-scripting-jvm", "$ktGroup:kotlin-scripting-jvm:$version", transitive = false),
        singleJarMvnLib("kotlinc.kotlin-reflect", "$ktGroup:kotlin-reflect:$version", excludes = listOf(MavenId(ktGroup, "kotlin-stdlib"))),
        singleJarMvnLib("kotlin-script-runtime", "$ktGroup:kotlin-script-runtime:$version"),
        run {
            val mavenIds = listOf(
                MavenId.fromCoordinates("$ktGroup:kotlin-stdlib-jdk8:$version"),
                MavenId.fromCoordinates("$ktGroup:kotlin-stdlib:$version"),
                MavenId.fromCoordinates("$ktGroup:kotlin-stdlib-common:$version"),
                MavenId.fromCoordinates("$ktGroup:kotlin-stdlib-jdk7:$version")
            )
            JpsLibrary(
                "kotlinc.kotlin-stdlib",
                JpsLibrary.Kind.Maven(mavenIds.first(), excludes = listOf(MavenId("org.jetbrains", "annotations"))),
                annotations = listOf(JpsUrl.File(JpsPath.ProjectDir("lib/annotations/kotlin", isCommunity))),
                classes = mavenIds.map { JpsUrl.Jar(JpsPath.MavenRepository(it)) },
                sources = mavenIds.map { JpsUrl.Jar(JpsPath.MavenRepository(it, isSources = true)) }
            )
        },
    ).map { jpsLibrary ->
        when (kotlincArtifactsMode) {
            KotlincArtifactsMode.MAVEN -> jpsLibrary
            KotlincArtifactsMode.BOOTSTRAP -> jpsLibrary.copy(
                kind = JpsLibrary.Kind.Jars,
                classes = jpsLibrary.classes.map { it.convertKotlincMvnToBootstrap(isCommunity) },
                sources = jpsLibrary.sources.map { it.convertKotlincMvnToBootstrap(isCommunity) },
            )
        }
    }
}

private fun JpsUrl.convertKotlincMvnToBootstrap(isCommunity: Boolean): JpsUrl {
    val jpsPath = this.jpsPath
    require(jpsPath is JpsPath.MavenRepository)
    return JpsUrl.Jar(JpsPath.ProjectDir("../build/repo/${jpsPath.path}", isCommunity))
}

private fun kotlincForIdeWithStandardNaming(name: String, version: String, includeSources: Boolean = true): JpsLibrary {
    require(name.startsWith("kotlinc."))
    return singleJarMvnLib(
        name,
        "$ktGroup:${name.removePrefix("kotlinc.")}-for-ide:$version",
        transitive = false,
        includeSources = includeSources
    )
}