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, project: Project,
javaBasePlugin: JavaBasePlugin, javaBasePlugin: JavaBasePlugin,
sourceSet: SourceSet, sourceSet: SourceSet,
val scriptHandler: ScriptHandler,
tasksProvider: KotlinTasksProvider, tasksProvider: KotlinTasksProvider,
kotlinSourceSetProvider: KotlinSourceSetProvider kotlinSourceSetProvider: KotlinSourceSetProvider
) : KotlinSourceSetProcessor<KotlinCompile>( ) : KotlinSourceSetProcessor<KotlinCompile>(
@@ -168,7 +167,6 @@ class Kotlin2JsSourceSetProcessor(
project: Project, project: Project,
javaBasePlugin: JavaBasePlugin, javaBasePlugin: JavaBasePlugin,
sourceSet: SourceSet, sourceSet: SourceSet,
val scriptHandler: ScriptHandler,
tasksProvider: KotlinTasksProvider, tasksProvider: KotlinTasksProvider,
kotlinSourceSetProvider: KotlinSourceSetProvider kotlinSourceSetProvider: KotlinSourceSetProvider
) : KotlinSourceSetProcessor<Kotlin2JsCompile>( ) : 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<*> abstract fun buildSourceSetProcessor(project: Project, javaBasePlugin: JavaBasePlugin, sourceSet: SourceSet): KotlinSourceSetProcessor<*>
override fun apply(project: Project) { override fun apply(project: Project) {
@@ -242,12 +240,11 @@ abstract class AbstractKotlinPlugin @Inject constructor(val scriptHandler: Scrip
open class KotlinPlugin( open class KotlinPlugin(
scriptHandler: ScriptHandler,
tasksProvider: KotlinTasksProvider, tasksProvider: KotlinTasksProvider,
kotlinSourceSetProvider: KotlinSourceSetProvider kotlinSourceSetProvider: KotlinSourceSetProvider
) : AbstractKotlinPlugin(scriptHandler, tasksProvider, kotlinSourceSetProvider) { ) : AbstractKotlinPlugin(tasksProvider, kotlinSourceSetProvider) {
override fun buildSourceSetProcessor(project: Project, javaBasePlugin: JavaBasePlugin, sourceSet: SourceSet) = 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) { override fun apply(project: Project) {
project.createKaptExtension() project.createKaptExtension()
@@ -257,16 +254,14 @@ open class KotlinPlugin(
open class Kotlin2JsPlugin( open class Kotlin2JsPlugin(
scriptHandler: ScriptHandler,
tasksProvider: KotlinTasksProvider, tasksProvider: KotlinTasksProvider,
kotlinSourceSetProvider: KotlinSourceSetProvider kotlinSourceSetProvider: KotlinSourceSetProvider
) : AbstractKotlinPlugin(scriptHandler, tasksProvider, kotlinSourceSetProvider) { ) : AbstractKotlinPlugin(tasksProvider, kotlinSourceSetProvider) {
override fun buildSourceSetProcessor(project: Project, javaBasePlugin: JavaBasePlugin, sourceSet: SourceSet) = 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( open class KotlinAndroidPlugin(
val scriptHandler: ScriptHandler,
val tasksProvider: KotlinTasksProvider, val tasksProvider: KotlinTasksProvider,
private val kotlinSourceSetProvider: KotlinSourceSetProvider private val kotlinSourceSetProvider: KotlinSourceSetProvider
) : Plugin<Project> { ) : 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.plus(other: FileCollection) = this.plus(other)
internal operator fun FileCollection.minus(other: FileCollection) = this.minus(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.Plugin
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.api.initialization.dsl.ScriptHandler
import org.gradle.api.internal.file.FileResolver import org.gradle.api.internal.file.FileResolver
import org.gradle.api.logging.Logger import org.gradle.api.logging.Logger
import org.gradle.api.logging.Logging 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 // 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> { abstract class KotlinBasePluginWrapper(protected val fileResolver: FileResolver): Plugin<Project> {
val log = Logging.getLogger(this.javaClass) val log = Logging.getLogger(this.javaClass)
override fun apply(project: Project) { 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 // 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") System.setProperty(org.jetbrains.kotlin.cli.common.KOTLIN_COMPILER_ENVIRONMENT_KEEPALIVE_PROPERTY, "true")
val kotlinPluginVersion = loadKotlinVersionFromResource(log) val kotlinPluginVersion = loadKotlinVersionFromResource(log)
project.extensions.extraProperties?.set("kotlin.gradle.plugin.version", kotlinPluginVersion) project.extensions.extraProperties?.set("kotlin.gradle.plugin.version", kotlinPluginVersion)
val plugin = getPlugin(sourceBuildScript) val plugin = getPlugin()
plugin.apply(project) plugin.apply(project)
val cleanUpBuildListener = CleanUpBuildListener(project) val cleanUpBuildListener = CleanUpBuildListener(project)
@@ -38,39 +30,22 @@ abstract class KotlinBasePluginWrapper(protected val fileResolver: FileResolver)
project.gradle.addBuildListener(cleanUpBuildListener) project.gradle.addBuildListener(cleanUpBuildListener)
} }
protected abstract fun getPlugin(scriptHandler: ScriptHandler): Plugin<Project> protected abstract fun getPlugin(): 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
}
} }
open class KotlinPluginWrapper @Inject constructor(fileResolver: FileResolver): KotlinBasePluginWrapper(fileResolver) { open class KotlinPluginWrapper @Inject constructor(fileResolver: FileResolver): KotlinBasePluginWrapper(fileResolver) {
override fun getPlugin(scriptHandler: ScriptHandler) = override fun getPlugin() =
KotlinPlugin(scriptHandler, KotlinTasksProvider(), KotlinSourceSetProviderImpl(fileResolver)) KotlinPlugin(KotlinTasksProvider(), KotlinSourceSetProviderImpl(fileResolver))
} }
open class KotlinAndroidPluginWrapper @Inject constructor(fileResolver: FileResolver): KotlinBasePluginWrapper(fileResolver) { open class KotlinAndroidPluginWrapper @Inject constructor(fileResolver: FileResolver): KotlinBasePluginWrapper(fileResolver) {
override fun getPlugin(scriptHandler: ScriptHandler) = override fun getPlugin() =
KotlinAndroidPlugin(scriptHandler, AndroidTasksProvider(), KotlinSourceSetProviderImpl(fileResolver)) KotlinAndroidPlugin(AndroidTasksProvider(), KotlinSourceSetProviderImpl(fileResolver))
} }
open class Kotlin2JsPluginWrapper @Inject constructor(fileResolver: FileResolver): KotlinBasePluginWrapper(fileResolver) { open class Kotlin2JsPluginWrapper @Inject constructor(fileResolver: FileResolver): KotlinBasePluginWrapper(fileResolver) {
override fun getPlugin(scriptHandler: ScriptHandler) = override fun getPlugin() =
Kotlin2JsPlugin(scriptHandler, KotlinTasksProvider(), KotlinSourceSetProviderImpl(fileResolver)) Kotlin2JsPlugin(KotlinTasksProvider(), KotlinSourceSetProviderImpl(fileResolver))
} }
fun Logger.kotlinDebug(message: String) { fun Logger.kotlinDebug(message: String) {