Refactoring: remove unused ScriptHandler

This commit is contained in:
Alexey Tsvetkov
2016-07-27 22:37:05 +03:00
parent 5f4e56c251
commit f649ebfdba
2 changed files with 13 additions and 61 deletions
@@ -101,7 +101,6 @@ class Kotlin2JvmSourceSetProcessor(
project: Project,
javaBasePlugin: JavaBasePlugin,
sourceSet: SourceSet,
val scriptHandler: ScriptHandler,
tasksProvider: KotlinTasksProvider,
kotlinSourceSetProvider: KotlinSourceSetProvider
) : KotlinSourceSetProcessor<KotlinCompile>(
@@ -168,7 +167,6 @@ class Kotlin2JsSourceSetProcessor(
project: Project,
javaBasePlugin: JavaBasePlugin,
sourceSet: SourceSet,
val scriptHandler: ScriptHandler,
tasksProvider: KotlinTasksProvider,
kotlinSourceSetProvider: KotlinSourceSetProvider
) : KotlinSourceSetProcessor<Kotlin2JsCompile>(
@@ -217,7 +215,7 @@ class Kotlin2JsSourceSetProcessor(
}
abstract class AbstractKotlinPlugin @Inject constructor(val scriptHandler: ScriptHandler, val tasksProvider: KotlinTasksProvider, val kotlinSourceSetProvider: KotlinSourceSetProvider) : Plugin<Project> {
abstract class AbstractKotlinPlugin(val tasksProvider: KotlinTasksProvider, val kotlinSourceSetProvider: KotlinSourceSetProvider) : Plugin<Project> {
abstract fun buildSourceSetProcessor(project: Project, javaBasePlugin: JavaBasePlugin, sourceSet: SourceSet): KotlinSourceSetProcessor<*>
override fun apply(project: Project) {
@@ -242,12 +240,11 @@ abstract class AbstractKotlinPlugin @Inject constructor(val scriptHandler: Scrip
open class KotlinPlugin(
scriptHandler: ScriptHandler,
tasksProvider: KotlinTasksProvider,
kotlinSourceSetProvider: KotlinSourceSetProvider
) : AbstractKotlinPlugin(scriptHandler, tasksProvider, kotlinSourceSetProvider) {
) : AbstractKotlinPlugin(tasksProvider, kotlinSourceSetProvider) {
override fun buildSourceSetProcessor(project: Project, javaBasePlugin: JavaBasePlugin, sourceSet: SourceSet) =
Kotlin2JvmSourceSetProcessor(project, javaBasePlugin, sourceSet, scriptHandler, tasksProvider, kotlinSourceSetProvider)
Kotlin2JvmSourceSetProcessor(project, javaBasePlugin, sourceSet, tasksProvider, kotlinSourceSetProvider)
override fun apply(project: Project) {
project.createKaptExtension()
@@ -257,16 +254,14 @@ open class KotlinPlugin(
open class Kotlin2JsPlugin(
scriptHandler: ScriptHandler,
tasksProvider: KotlinTasksProvider,
kotlinSourceSetProvider: KotlinSourceSetProvider
) : AbstractKotlinPlugin(scriptHandler, tasksProvider, kotlinSourceSetProvider) {
) : AbstractKotlinPlugin(tasksProvider, kotlinSourceSetProvider) {
override fun buildSourceSetProcessor(project: Project, javaBasePlugin: JavaBasePlugin, sourceSet: SourceSet) =
Kotlin2JsSourceSetProcessor(project, javaBasePlugin, sourceSet, scriptHandler, tasksProvider, kotlinSourceSetProvider)
Kotlin2JsSourceSetProcessor(project, javaBasePlugin, sourceSet, tasksProvider, kotlinSourceSetProvider)
}
open class KotlinAndroidPlugin(
val scriptHandler: ScriptHandler,
val tasksProvider: KotlinTasksProvider,
private val kotlinSourceSetProvider: KotlinSourceSetProvider
) : Plugin<Project> {
@@ -512,24 +507,6 @@ class SubpluginEnvironment(
}
}
open class GradleUtils(val scriptHandler: ScriptHandler, val project: Project) {
public fun resolveDependencies(vararg coordinates: String): Collection<File> {
val dependencyHandler: DependencyHandler = scriptHandler.dependencies
val configurationsContainer: ConfigurationContainer = scriptHandler.configurations
val deps = coordinates.map { dependencyHandler.create(it) }
val configuration = configurationsContainer.detachedConfiguration(*deps.toTypedArray())
return configuration.resolvedConfiguration.getFiles { true }
}
public fun kotlinPluginVersion(): String = project.properties["kotlin.gradle.plugin.version"] as String
public fun kotlinPluginArtifactCoordinates(artifact: String): String = "org.jetbrains.kotlin:${artifact}:${kotlinPluginVersion()}"
public fun kotlinJsLibraryCoordinates(): String = kotlinPluginArtifactCoordinates("kotlin-js-library")
public fun resolveJsLibrary(): File = resolveDependencies(kotlinJsLibraryCoordinates()).first()
}
internal operator fun FileCollection.plus(other: FileCollection) = this.plus(other)
internal operator fun FileCollection.minus(other: FileCollection) = this.minus(other)
@@ -2,7 +2,6 @@ package org.jetbrains.kotlin.gradle.plugin
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.initialization.dsl.ScriptHandler
import org.gradle.api.internal.file.FileResolver
import org.gradle.api.logging.Logger
import org.gradle.api.logging.Logging
@@ -14,23 +13,16 @@ import javax.inject.Inject
// TODO: simplify: the complicated structure is a leftover from dynamic loading of plugin core, could be significantly simplified now
abstract class KotlinBasePluginWrapper(protected val fileResolver: FileResolver): Plugin<Project> {
val log = Logging.getLogger(this.javaClass)
override fun apply(project: Project) {
val sourceBuildScript = findSourceBuildScript(project)
if (sourceBuildScript == null) {
log.error("Failed to determine source cofiguration of kotlin plugin. Can not download core. Please verify that this or any parent project " +
"contains 'kotlin-gradle-plugin' in buildscript's classpath configuration.")
return
}
// TODO: consider only set if if daemon or parallel compilation are enabled, though this way it should be safe too
System.setProperty(org.jetbrains.kotlin.cli.common.KOTLIN_COMPILER_ENVIRONMENT_KEEPALIVE_PROPERTY, "true")
val kotlinPluginVersion = loadKotlinVersionFromResource(log)
project.extensions.extraProperties?.set("kotlin.gradle.plugin.version", kotlinPluginVersion)
val plugin = getPlugin(sourceBuildScript)
val plugin = getPlugin()
plugin.apply(project)
val cleanUpBuildListener = CleanUpBuildListener(project)
@@ -38,39 +30,22 @@ abstract class KotlinBasePluginWrapper(protected val fileResolver: FileResolver)
project.gradle.addBuildListener(cleanUpBuildListener)
}
protected abstract fun getPlugin(scriptHandler: ScriptHandler): Plugin<Project>
private fun findSourceBuildScript(project: Project): ScriptHandler? {
log.kotlinDebug("Looking for proper script handler")
var curProject = project
while (curProject != curProject.parent) {
log.kotlinDebug("Looking in project $project")
val scriptHandler = curProject.buildscript
val found = scriptHandler.configurations.findByName("classpath")?.firstOrNull { it.name.contains("kotlin-gradle-plugin") } != null
if (found) {
log.kotlinDebug("Found! returning...")
return scriptHandler
}
log.kotlinDebug("not found, switching to parent")
curProject = curProject.parent ?: break
}
return null
}
protected abstract fun getPlugin(): Plugin<Project>
}
open class KotlinPluginWrapper @Inject constructor(fileResolver: FileResolver): KotlinBasePluginWrapper(fileResolver) {
override fun getPlugin(scriptHandler: ScriptHandler) =
KotlinPlugin(scriptHandler, KotlinTasksProvider(), KotlinSourceSetProviderImpl(fileResolver))
override fun getPlugin() =
KotlinPlugin(KotlinTasksProvider(), KotlinSourceSetProviderImpl(fileResolver))
}
open class KotlinAndroidPluginWrapper @Inject constructor(fileResolver: FileResolver): KotlinBasePluginWrapper(fileResolver) {
override fun getPlugin(scriptHandler: ScriptHandler) =
KotlinAndroidPlugin(scriptHandler, AndroidTasksProvider(), KotlinSourceSetProviderImpl(fileResolver))
override fun getPlugin() =
KotlinAndroidPlugin(AndroidTasksProvider(), KotlinSourceSetProviderImpl(fileResolver))
}
open class Kotlin2JsPluginWrapper @Inject constructor(fileResolver: FileResolver): KotlinBasePluginWrapper(fileResolver) {
override fun getPlugin(scriptHandler: ScriptHandler) =
Kotlin2JsPlugin(scriptHandler, KotlinTasksProvider(), KotlinSourceSetProviderImpl(fileResolver))
override fun getPlugin() =
Kotlin2JsPlugin(KotlinTasksProvider(), KotlinSourceSetProviderImpl(fileResolver))
}
fun Logger.kotlinDebug(message: String) {