@@ -14,7 +14,10 @@ case class GradleJavaToolchains(
1414 tool : GradleBuildTool ,
1515 index : IndexCommand ,
1616 gradleVersion : Option [String ],
17+ isJavaEnabled : Boolean ,
1718 isScalaEnabled : Boolean ,
19+ isKotlinEnabled : Boolean ,
20+ isKotlinMultiplatformEnabled : Boolean ,
1821 gradleCommand : String ,
1922 tmp : Path
2023) {
@@ -56,7 +59,11 @@ object GradleJavaToolchains {
5659 ): GradleJavaToolchains = {
5760 val scriptPath = tmp.resolve(" java-toolchains.gradle" )
5861 val toolchainsPath = tmp.resolve(" java-toolchains.txt" )
62+ val javaEnabledPath = tmp.resolve(" java-enabled.txt" )
5963 val scalaEnabledPath = tmp.resolve(" scala-enabled.txt" )
64+ val kotlinEnabledPath = tmp.resolve(" kotlin-enabled.txt" )
65+ val kotlinMultiplatformEnabledPath = tmp
66+ .resolve(" kotlin-multiplatform-enabled.txt" )
6067 val gradleVersionPath = tmp.resolve(" gradle-version.txt" )
6168 val taskName = " lsifDetectJavaToolchains"
6269 val script =
@@ -70,12 +77,21 @@ object GradleJavaToolchains {
7077 |} catch (Exception e) {
7178 | // Ignore errors.
7279 |}
80+ |
81+ |def lsifJavaAppendLine(path, line) {
82+ | java.nio.file.Files.write(
83+ | java.nio.file.Paths.get(path),
84+ | [line],
85+ | java.nio.file.StandardOpenOption.APPEND,
86+ | java.nio.file.StandardOpenOption.CREATE)
87+ |}
88+ |
7389 |allprojects {
7490 | task $taskName {
7591 | def toolchainsOut = java.nio.file.Paths.get(' $toolchainsPath')
7692 | doLast {
77- | tasks.withType(JavaCompile) {
78- | try {
93+ | try {
94+ | tasks.withType(JavaCompile) {
7995 | def lines = new ArrayList<String>()
8096 | def path = javaCompiler.get().getExecutablePath()
8197 | def version = javaCompiler.get().getMetadata().getLanguageVersion().asInt()
@@ -85,19 +101,21 @@ object GradleJavaToolchains {
85101 | [line],
86102 | java.nio.file.StandardOpenOption.APPEND,
87103 | java.nio.file.StandardOpenOption.CREATE)
88- | } catch (Exception e) {
89- | // Ignore errors.
104+ | lsifJavaAppendLine(toolchainsOut, line)
90105 | }
106+ | } catch (Exception e) {
107+ | // Ignore errors.
91108 | }
92- | boolean isScalaEnabled = project.plugins.any {
93- | it.getClass().getName().endsWith("org.gradle.api.plugins.scala.ScalaPlugin")
94- | }
95- | if (isScalaEnabled) {
96- | java.nio.file.Files.write(
97- | java.nio.file.Paths.get(' $scalaEnabledPath'),
98- | ["true"],
99- | java.nio.file.StandardOpenOption.APPEND,
100- | java.nio.file.StandardOpenOption.CREATE)
109+ | project.plugins.each {
110+ | def name = it.getClass().getName()
111+ | if (name.endsWith("org.gradle.api.plugins.JavaPlugin"))
112+ | lsifJavaAppendLine(' $javaEnabledPath', 'true')
113+ | if (name.endsWith("org.gradle.api.plugins.scala.ScalaPlugin"))
114+ | lsifJavaAppendLine(' $scalaEnabledPath', 'true')
115+ | if (name.startsWith("org.jetbrains.kotlin.gradle.plugin"))
116+ | lsifJavaAppendLine(' $kotlinEnabledPath', 'true')
117+ | if (name.equals("org.jetbrains.kotlin.gradle.plugin.KotlinMultiplatformPluginWrapper"))
118+ | lsifJavaAppendLine(' $kotlinMultiplatformEnabledPath', 'true')
101119 | }
102120 | }
103121 | }
@@ -131,7 +149,11 @@ object GradleJavaToolchains {
131149 tool,
132150 index,
133151 gradleVersion = gradleVersion,
152+ isJavaEnabled = Files .isRegularFile(javaEnabledPath),
134153 isScalaEnabled = Files .isRegularFile(scalaEnabledPath),
154+ isKotlinEnabled = Files .isRegularFile(kotlinEnabledPath),
155+ isKotlinMultiplatformEnabled = Files
156+ .isRegularFile(kotlinMultiplatformEnabledPath),
135157 gradleCommand = gradleCommand,
136158 tmp = tmp
137159 )
0 commit comments