blob: 7076892af2a08c1f518ee792b0b091b1c2f6a8f8 [file] [log] [blame] [edit]
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.gradle
import org.gradle.api.Project
import org.gradle.tooling.model.kotlin.dsl.KotlinDslModelsParameters.PREPARATION_TASK_NAME
import org.gradle.util.GradleVersion
import org.jetbrains.plugins.gradle.tooling.AbstractModelBuilderService
import org.jetbrains.plugins.gradle.tooling.ErrorMessageBuilder
import org.jetbrains.plugins.gradle.tooling.ModelBuilderContext
class KotlinDslScriptTaskModelBuilder : AbstractModelBuilderService() {
override fun canBuild(modelName: String): Boolean {
return KotlinDslScriptAdditionalTask::class.java.name == modelName
}
override fun buildAll(modelName: String, project: Project, context: ModelBuilderContext): Any? {
if (kotlinDslScriptsModelImportSupported(project.gradle.gradleVersion)) {
val startParameter = project.gradle.startParameter
val tasks = HashSet(startParameter.taskNames)
tasks.add(PREPARATION_TASK_NAME)
startParameter.setTaskNames(tasks)
}
return null
}
override fun getErrorMessageBuilder(project: Project, e: Exception): ErrorMessageBuilder {
return ErrorMessageBuilder.create(
project, e, "Kotlin DSL script model errors"
).withDescription("Unable to set $PREPARATION_TASK_NAME sync task.")
}
private fun kotlinDslScriptsModelImportSupported(currentGradleVersion: String): Boolean {
return GradleVersion.version(currentGradleVersion) >= GradleVersion.version("6.0")
}
}