Remove com.intellij usages from Gradle plugin
This commit is contained in:
+3
-3
@@ -27,7 +27,6 @@ import org.jetbrains.kotlin.cli.common.messages.CompilerMessageLocation
|
||||
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
|
||||
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
|
||||
import org.jetbrains.kotlin.cli.common.messages.MessageRenderer
|
||||
import com.intellij.openapi.util.io.FileUtil
|
||||
import org.gradle.api.invocation.Gradle
|
||||
import org.jetbrains.kotlin.config.Services
|
||||
import org.jetbrains.kotlin.daemon.client.CompileServiceSession
|
||||
@@ -40,6 +39,7 @@ import org.jetbrains.kotlin.gradle.utils.relativeToRoot
|
||||
import org.jetbrains.kotlin.gradle.plugin.kotlinDebug
|
||||
import org.jetbrains.kotlin.gradle.tasks.InspectClassesForMultiModuleIC
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||
import org.jetbrains.kotlin.gradle.utils.newTmpFile
|
||||
import org.jetbrains.kotlin.incremental.*
|
||||
import java.io.ByteArrayOutputStream
|
||||
import java.io.File
|
||||
@@ -404,7 +404,7 @@ internal class GradleCompilerRunner(private val project: Project) : KotlinCompil
|
||||
val log = project.logger
|
||||
if (clientIsAliveFlagFile == null || !clientIsAliveFlagFile!!.exists()) {
|
||||
val projectName = project.rootProject.name.normalizeForFlagFile()
|
||||
clientIsAliveFlagFile = FileUtil.createTempFile("kotlin-compiler-in-$projectName-", ".alive", /*deleteOnExit =*/ true)
|
||||
clientIsAliveFlagFile = newTmpFile(prefix = "kotlin-compiler-in-$projectName-", suffix = ".alive")
|
||||
log.kotlinDebug { CREATED_CLIENT_FILE_PREFIX + clientIsAliveFlagFile!!.canonicalPath }
|
||||
}
|
||||
else {
|
||||
@@ -429,7 +429,7 @@ internal class GradleCompilerRunner(private val project: Project) : KotlinCompil
|
||||
val log = project.logger
|
||||
if (sessionFlagFile == null || !sessionFlagFile!!.exists()) {
|
||||
val sessionFilesDir = sessionsDir(project).apply { mkdirs() }
|
||||
sessionFlagFile = FileUtil.createTempFile(sessionFilesDir, "kotlin-compiler-", ".salive", /*deleteOnExit =*/ true)
|
||||
sessionFlagFile = newTmpFile(prefix = "kotlin-compiler-", suffix = ".salive", directory = sessionFilesDir)
|
||||
log.kotlinDebug { CREATED_SESSION_FILE_PREFIX + sessionFlagFile!!.relativeToRoot(project) }
|
||||
}
|
||||
else {
|
||||
|
||||
+5
-8
@@ -16,7 +16,6 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.internal
|
||||
|
||||
import com.intellij.openapi.util.io.FileUtil
|
||||
import org.gradle.api.artifacts.Configuration
|
||||
import org.gradle.api.file.FileCollection
|
||||
import org.gradle.api.tasks.*
|
||||
@@ -27,6 +26,7 @@ import org.jetbrains.kotlin.gradle.tasks.FilteringSourceRootsContainer
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||
import org.jetbrains.kotlin.gradle.tasks.SourceRoots
|
||||
import org.jetbrains.kotlin.gradle.incremental.ChangedFiles
|
||||
import org.jetbrains.kotlin.gradle.utils.isParentOf
|
||||
import org.jetbrains.kotlin.incremental.classpathAsList
|
||||
import org.jetbrains.kotlin.incremental.destinationAsFile
|
||||
import org.jetbrains.kotlin.gradle.utils.pathsAsStringRelativeTo
|
||||
@@ -62,13 +62,10 @@ open class KaptGenerateStubsTask : KotlinCompile() {
|
||||
super.setSource(sourceRootsContainer.set(sources))
|
||||
}
|
||||
|
||||
private fun isSourceRootAllowed(source: File): Boolean {
|
||||
fun File.isInside(parent: File) = FileUtil.isAncestor(parent, this, /* strict = */ false)
|
||||
|
||||
return !source.isInside(destinationDir) &&
|
||||
!source.isInside(stubsDir) &&
|
||||
!source.isInside(generatedSourcesDir)
|
||||
}
|
||||
private fun isSourceRootAllowed(source: File): Boolean =
|
||||
!destinationDir.isParentOf(source) &&
|
||||
!stubsDir.isParentOf(source) &&
|
||||
!generatedSourcesDir.isParentOf(source)
|
||||
|
||||
override fun setupCompilerArgs(args: K2JVMCompilerArguments, defaultsOnly: Boolean) {
|
||||
kotlinCompileTask.setupCompilerArgs(args)
|
||||
|
||||
+3
-4
@@ -1,7 +1,5 @@
|
||||
package org.jetbrains.kotlin.gradle.internal
|
||||
|
||||
import com.intellij.openapi.util.io.FileUtil
|
||||
import com.intellij.openapi.util.text.StringUtil.compareVersionNumbers
|
||||
import org.gradle.api.GradleException
|
||||
import org.gradle.api.artifacts.Configuration
|
||||
import org.gradle.api.file.FileCollection
|
||||
@@ -11,9 +9,11 @@ import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments
|
||||
import org.jetbrains.kotlin.compilerRunner.GradleCompilerEnvironment
|
||||
import org.jetbrains.kotlin.compilerRunner.GradleCompilerRunner
|
||||
import org.jetbrains.kotlin.compilerRunner.OutputItemsCollectorImpl
|
||||
import org.jetbrains.kotlin.gradle.plugin.compareVersionNumbers
|
||||
import org.jetbrains.kotlin.gradle.plugin.PLUGIN_CLASSPATH_CONFIGURATION_NAME
|
||||
import org.jetbrains.kotlin.gradle.tasks.*
|
||||
import org.jetbrains.kotlin.gradle.utils.isJavaFile
|
||||
import org.jetbrains.kotlin.gradle.utils.isParentOf
|
||||
import org.jetbrains.kotlin.gradle.utils.toSortedPathsArray
|
||||
import java.io.File
|
||||
|
||||
@@ -101,8 +101,7 @@ open class KaptTask : ConventionTask(), CompilerArgumentAwareWithInput<K2JVMComp
|
||||
.filterTo(HashSet(), ::isRootAllowed)
|
||||
|
||||
private fun isRootAllowed(file: File): Boolean =
|
||||
!FileUtil.isAncestor(destinationDir, file, /* strict = */ false) &&
|
||||
!FileUtil.isAncestor(classesDir, file, /* strict = */ false)
|
||||
!destinationDir.isParentOf(file) && !classesDir.isParentOf(file)
|
||||
|
||||
@TaskAction
|
||||
fun compile() {
|
||||
|
||||
-6
@@ -20,9 +20,6 @@ import org.gradle.BuildAdapter
|
||||
import org.gradle.BuildResult
|
||||
import org.gradle.api.invocation.Gradle
|
||||
import org.gradle.api.logging.Logging
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||
import com.intellij.openapi.vfs.impl.ZipHandler
|
||||
import com.intellij.openapi.vfs.impl.jar.CoreJarFileSystem
|
||||
import org.jetbrains.kotlin.compilerRunner.DELETED_SESSION_FILE_PREFIX
|
||||
import org.jetbrains.kotlin.compilerRunner.GradleCompilerRunner
|
||||
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile
|
||||
@@ -149,13 +146,10 @@ internal class CompilerServicesCleanup() {
|
||||
if (isWindows) {
|
||||
cleanJarCache()
|
||||
}
|
||||
|
||||
(KotlinCoreEnvironment.applicationEnvironment?.jarFileSystem as? CoreJarFileSystem)?.clearHandlersCache()
|
||||
}
|
||||
|
||||
private fun cleanJarCache() {
|
||||
log.kotlinDebug("Clean JAR cache")
|
||||
ZipHandler.clearFileAccessorCache()
|
||||
log.kotlinDebug("JAR cache cleared")
|
||||
}
|
||||
}
|
||||
|
||||
+3
-8
@@ -3,9 +3,6 @@ package org.jetbrains.kotlin.gradle.plugin
|
||||
import com.android.build.gradle.BaseExtension
|
||||
import com.android.build.gradle.BasePlugin
|
||||
import com.android.builder.model.SourceProvider
|
||||
import com.intellij.openapi.util.io.FileUtil
|
||||
import com.intellij.openapi.util.text.StringUtil.compareVersionNumbers
|
||||
import com.intellij.util.ReflectionUtil
|
||||
import groovy.lang.Closure
|
||||
import org.gradle.api.*
|
||||
import org.gradle.api.artifacts.Configuration
|
||||
@@ -218,10 +215,8 @@ internal class Kotlin2JvmSourceSetProcessor(
|
||||
internal fun SourceSetOutput.tryAddClassesDir(
|
||||
classesDirProvider: () -> FileCollection
|
||||
): Boolean {
|
||||
val getClassesDirs = ReflectionUtil.findMethod(
|
||||
javaClass.methods.asList(),
|
||||
"getClassesDirs"
|
||||
) ?: return false
|
||||
val getClassesDirs = javaClass.methods.firstOrNull { it.name == "getClassesDirs" && it.parameterCount == 0 }
|
||||
?: return false
|
||||
|
||||
val classesDirs = getClassesDirs(this) as? ConfigurableFileCollection
|
||||
?: return false
|
||||
@@ -262,7 +257,7 @@ internal class Kotlin2JsSourceSetProcessor(
|
||||
kotlinTask.kotlinOptions.outputFile = kotlinTask.outputFile.absolutePath
|
||||
val outputDir = kotlinTask.outputFile.parentFile
|
||||
|
||||
if (FileUtil.isAncestor(outputDir, project.rootDir, false))
|
||||
if (outputDir.isParentOf(project.rootDir))
|
||||
throw InvalidUserDataException(
|
||||
"The output directory '$outputDir' (defined by outputFile of $kotlinTask) contains or " +
|
||||
"matches the project root directory '${project.rootDir}'.\n" +
|
||||
|
||||
+2
-2
@@ -3,10 +3,10 @@ package org.jetbrains.kotlin.gradle.tasks
|
||||
import org.gradle.api.file.FileTree
|
||||
import org.gradle.api.file.SourceDirectorySet
|
||||
import org.gradle.api.logging.Logger
|
||||
import com.intellij.openapi.util.io.FileUtil
|
||||
import org.jetbrains.kotlin.gradle.plugin.kotlinDebug
|
||||
import org.jetbrains.kotlin.gradle.utils.isJavaFile
|
||||
import org.jetbrains.kotlin.gradle.utils.isKotlinFile
|
||||
import org.jetbrains.kotlin.gradle.utils.isParentOf
|
||||
import java.io.File
|
||||
import java.util.*
|
||||
|
||||
@@ -35,7 +35,7 @@ internal sealed class SourceRoots(val kotlinSourceFiles: List<File>) {
|
||||
|
||||
for (sourceDir in sourceDirs) {
|
||||
for (sourceRoot in allSourceRoots) {
|
||||
if (FileUtil.isAncestor(sourceRoot, sourceDir, /* strict = */false)) {
|
||||
if (sourceRoot.isParentOf(sourceDir)) {
|
||||
resultRoots.add(sourceRoot)
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -20,8 +20,8 @@ import org.gradle.api.DefaultTask
|
||||
import org.gradle.api.tasks.*
|
||||
import org.gradle.api.tasks.incremental.IncrementalTaskInputs
|
||||
import org.gradle.api.tasks.incremental.InputFileDetails
|
||||
import com.intellij.openapi.util.io.FileUtil.isAncestor
|
||||
import org.jetbrains.kotlin.gradle.plugin.kotlinDebug
|
||||
import org.jetbrains.kotlin.gradle.utils.isParentOf
|
||||
import java.io.File
|
||||
import java.io.ObjectInputStream
|
||||
import java.io.ObjectOutputStream
|
||||
@@ -175,7 +175,7 @@ internal open class SyncOutputTask : DefaultTask() {
|
||||
}
|
||||
|
||||
private fun File.siblingInJavaDir(baseDir: File? = null): File {
|
||||
val base = baseDir ?: classesDirs.find { isAncestor(it, this, true) }!!
|
||||
val base = baseDir ?: classesDirs.find { it.isParentOf(this, strict = true) }!!
|
||||
return File(javaOutputDir, this.relativeTo(base).path)
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -5,7 +5,6 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.tasks
|
||||
|
||||
import com.intellij.openapi.util.io.FileUtil
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.Task
|
||||
import org.gradle.api.file.FileCollection
|
||||
@@ -35,6 +34,7 @@ import org.jetbrains.kotlin.gradle.internal.prepareCompilerArguments
|
||||
import org.jetbrains.kotlin.gradle.plugin.*
|
||||
import org.jetbrains.kotlin.gradle.utils.ParsedGradleVersion
|
||||
import org.jetbrains.kotlin.gradle.utils.toSortedPathsArray
|
||||
import org.jetbrains.kotlin.gradle.utils.isParentOf
|
||||
import org.jetbrains.kotlin.incremental.*
|
||||
import org.jetbrains.kotlin.utils.LibraryUtils
|
||||
import java.io.File
|
||||
@@ -416,7 +416,7 @@ open class KotlinCompile : AbstractKotlinCompile<K2JVMCompilerArguments>(), Kotl
|
||||
it is AbstractCompile &&
|
||||
it !is JavaCompile &&
|
||||
it !is AbstractKotlinCompile<*> &&
|
||||
FileUtil.isAncestor(javaOutputDir!!, it.destinationDir, /* strict = */ false)
|
||||
javaOutputDir!!.isParentOf(it.destinationDir)
|
||||
} as? AbstractCompile
|
||||
|
||||
if (illegalTask != null) {
|
||||
|
||||
+18
-1
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.gradle.utils
|
||||
|
||||
import org.gradle.api.Project
|
||||
import java.io.File
|
||||
import java.nio.file.Paths
|
||||
import java.util.*
|
||||
|
||||
internal fun File.isJavaFile() =
|
||||
@@ -31,4 +32,20 @@ internal fun File.relativeToRoot(project: Project): String =
|
||||
relativeOrCanonical(project.rootProject.rootDir)
|
||||
|
||||
internal fun Iterable<File>.toSortedPathsArray(): Array<String> =
|
||||
map { it.canonicalPath }.toTypedArray().also { Arrays.sort(it) }
|
||||
map { it.canonicalPath }.toTypedArray().also { Arrays.sort(it) }
|
||||
|
||||
internal fun newTmpFile(prefix: String, suffix: String? = null, directory: File? = null, deleteOnExit: Boolean = true) =
|
||||
File.createTempFile(prefix, suffix, directory).apply {
|
||||
if (deleteOnExit) deleteOnExit()
|
||||
}
|
||||
|
||||
internal fun File.isParentOf(childCandidate: File, strict: Boolean = false): Boolean {
|
||||
val parentPath = Paths.get(this.absolutePath).normalize()
|
||||
val childCandidatePath = Paths.get(childCandidate.absolutePath).normalize()
|
||||
|
||||
return if (strict) {
|
||||
childCandidatePath.startsWith(parentPath) && parentPath != childCandidate
|
||||
} else {
|
||||
childCandidatePath.startsWith(parentPath)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user