Implement scripting configuration gradle plugin
This commit is contained in:
@@ -0,0 +1,57 @@
|
|||||||
|
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
|
||||||
|
|
||||||
|
description = "Kotlin Scripting Compiler Plugin for Gradle"
|
||||||
|
|
||||||
|
apply { plugin("kotlin") }
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
id("com.gradle.plugin-publish")
|
||||||
|
`java-gradle-plugin`
|
||||||
|
}
|
||||||
|
|
||||||
|
val packedJars by configurations.creating
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
compile(project(":kotlin-gradle-plugin-api"))
|
||||||
|
compileOnly(project(":kotlin-scripting-compiler-plugin"))
|
||||||
|
packedJars(project(":kotlin-scripting-compiler-plugin")) { isTransitive = false }
|
||||||
|
runtime(project(":kotlin-scripting-common"))
|
||||||
|
runtime(project(":kotlin-scripting-jvm"))
|
||||||
|
}
|
||||||
|
|
||||||
|
sourceSets {
|
||||||
|
"main" { projectDefault() }
|
||||||
|
"test" { projectDefault() }
|
||||||
|
}
|
||||||
|
|
||||||
|
val jar: Jar by tasks
|
||||||
|
jar.apply {
|
||||||
|
classifier = "base"
|
||||||
|
}
|
||||||
|
|
||||||
|
runtimeJar(rewriteDepsToShadedCompiler(
|
||||||
|
task<ShadowJar>("shadowJar") {
|
||||||
|
from(packedJars)
|
||||||
|
from(the<JavaPluginConvention>().sourceSets.getByName("main").output)
|
||||||
|
}
|
||||||
|
))
|
||||||
|
sourcesJar()
|
||||||
|
javadocJar()
|
||||||
|
|
||||||
|
val gradlePluginId = "org.jetbrains.kotlin.plugin.scripting"
|
||||||
|
|
||||||
|
pluginBundle {
|
||||||
|
(plugins) {
|
||||||
|
gradlePluginId {
|
||||||
|
id = gradlePluginId
|
||||||
|
displayName = "Gradle plugin for kotlin scripting"
|
||||||
|
description = displayName
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
publish()
|
||||||
|
|
||||||
|
projectTest {
|
||||||
|
workingDir = rootDir
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
apply from: "$rootDir/libraries/tools/gradle-tools/pluginMarkers.gradle"
|
||||||
|
|
||||||
|
pluginMarkerProject('kotlin-scripting-gradle-plugin')
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
implementation-class=org.jetbrains.kotlin.scripting.gradle.ScriptingGradleSubplugin
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
implementation-class=org.jetbrains.kotlin.scripting.gradle.ScriptingGradleSubplugin
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
org.jetbrains.kotlin.scripting.gradle.ScriptingKotlinGradleSubplugin
|
||||||
+45
@@ -0,0 +1,45 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2000-2018 JetBrains s.r.o. 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.scripting.gradle
|
||||||
|
|
||||||
|
open class ScriptingExtension {
|
||||||
|
internal val myScriptDefinitions = mutableListOf<String>()
|
||||||
|
internal val myScriptDefinitionsClasspath = mutableListOf<String>()
|
||||||
|
internal var myDisableScriptDefinitionsFromClasspath = false
|
||||||
|
internal val myScriptResolverEnvironment = mutableMapOf<String, String?>()
|
||||||
|
|
||||||
|
open fun scriptDefinition(fqName: String) {
|
||||||
|
myScriptDefinitions.add(fqName)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun scriptDefinitions(fqNames: List<String>) {
|
||||||
|
myScriptDefinitions.addAll(fqNames)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun scriptDefinitions(vararg fqNames: String) {
|
||||||
|
myScriptDefinitions.addAll(fqNames)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun scriptDefinitionsClasspath(vararg paths: String) {
|
||||||
|
myScriptDefinitionsClasspath.addAll(paths)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun scriptDefinitionsClasspath(paths: List<String>) {
|
||||||
|
myScriptDefinitionsClasspath.addAll(paths)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun disableScriptDefinitionsFromClasspath(disable: Boolean) {
|
||||||
|
myDisableScriptDefinitionsFromClasspath = disable
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun scriptResolverEnvironment(vararg pairs: Pair<String, String?>) {
|
||||||
|
myScriptResolverEnvironment.putAll(pairs)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun scriptResolverEnvironment(pairs: List<Pair<String, String?>>) {
|
||||||
|
myScriptResolverEnvironment.putAll(pairs)
|
||||||
|
}
|
||||||
|
}
|
||||||
+70
@@ -0,0 +1,70 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2000-2018 JetBrains s.r.o. 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.scripting.gradle
|
||||||
|
|
||||||
|
import org.gradle.api.Plugin
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.api.tasks.SourceSet
|
||||||
|
import org.gradle.api.tasks.compile.AbstractCompile
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.KotlinGradleSubplugin
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.SubpluginOption
|
||||||
|
|
||||||
|
class ScriptingGradleSubplugin : Plugin<Project>
|
||||||
|
{
|
||||||
|
companion object {
|
||||||
|
fun isEnabled(project: Project) = project.plugins.findPlugin(ScriptingGradleSubplugin::class.java) != null
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun apply(project: Project) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
class ScriptingKotlinGradleSubplugin : KotlinGradleSubplugin<AbstractCompile> {
|
||||||
|
companion object {
|
||||||
|
val SCRIPTING_GROUP_NAME = "org.jetbrains.kotlin"
|
||||||
|
val SCRIPTING_ARTIFACT_NAME = "kotlin-scripting"
|
||||||
|
|
||||||
|
val SCRIPT_DEFINITIONS_OPTION = "script-definitions"
|
||||||
|
val SCRIPT_DEFINITIONS_CLASSPATH_OPTION = "script-definitions-classpath"
|
||||||
|
val DISABLE_SCRIPT_DEFINITIONS_FROM_CLSSPATH_OPTION = "disable-script-definitions-from-classpath"
|
||||||
|
val LEGACY_SCRIPT_RESOLVER_ENVIRONMENT_OPTION = "script-resolver-environment"
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun isApplicable(project: Project, task: AbstractCompile) = ScriptingGradleSubplugin.isEnabled(project)
|
||||||
|
|
||||||
|
override fun apply(
|
||||||
|
project: Project,
|
||||||
|
kotlinCompile: AbstractCompile,
|
||||||
|
javaCompile: AbstractCompile,
|
||||||
|
variantData: Any?,
|
||||||
|
androidProjectHandler: Any?,
|
||||||
|
javaSourceSet: SourceSet?
|
||||||
|
): List<SubpluginOption> {
|
||||||
|
if (!ScriptingGradleSubplugin.isEnabled(project)) return emptyList()
|
||||||
|
|
||||||
|
val scriptingExtension = project.extensions.findByType(ScriptingExtension::class.java) ?: return emptyList()
|
||||||
|
|
||||||
|
val options = mutableListOf<SubpluginOption>()
|
||||||
|
|
||||||
|
for (scriptDef in scriptingExtension.myScriptDefinitions) {
|
||||||
|
options += SubpluginOption(SCRIPT_DEFINITIONS_OPTION, scriptDef)
|
||||||
|
}
|
||||||
|
for (path in scriptingExtension.myScriptDefinitionsClasspath) {
|
||||||
|
options += SubpluginOption(SCRIPT_DEFINITIONS_CLASSPATH_OPTION, path)
|
||||||
|
}
|
||||||
|
if (scriptingExtension.myDisableScriptDefinitionsFromClasspath) {
|
||||||
|
options += SubpluginOption(DISABLE_SCRIPT_DEFINITIONS_FROM_CLSSPATH_OPTION, "true")
|
||||||
|
}
|
||||||
|
for (pair in scriptingExtension.myScriptResolverEnvironment) {
|
||||||
|
options += SubpluginOption(LEGACY_SCRIPT_RESOLVER_ENVIRONMENT_OPTION, "${pair.key}=${pair.value}")
|
||||||
|
}
|
||||||
|
|
||||||
|
return options
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getArtifactName() = "kotlin-scripting-gradle"
|
||||||
|
override fun getGroupName() = "org.jetbrains.kotlin"
|
||||||
|
override fun getCompilerPluginId() = "kotlin.scripting"
|
||||||
|
}
|
||||||
@@ -155,6 +155,7 @@ include ":kotlin-build-common",
|
|||||||
":kotlin-scripting-jvm-host",
|
":kotlin-scripting-jvm-host",
|
||||||
":kotlin-scripting-compiler-plugin",
|
":kotlin-scripting-compiler-plugin",
|
||||||
":kotlin-scripting-idea-plugin",
|
":kotlin-scripting-idea-plugin",
|
||||||
|
":kotlin-scripting-gradle-plugin",
|
||||||
":examples:scripting-jvm-simple-script",
|
":examples:scripting-jvm-simple-script",
|
||||||
":examples:scripting-jvm-maven-deps",
|
":examples:scripting-jvm-maven-deps",
|
||||||
":pill:generate-all-tests",
|
":pill:generate-all-tests",
|
||||||
@@ -164,6 +165,7 @@ include ":kotlin-build-common",
|
|||||||
':kotlin-gradle-plugin:plugin-marker',
|
':kotlin-gradle-plugin:plugin-marker',
|
||||||
':kotlin-allopen:plugin-marker',
|
':kotlin-allopen:plugin-marker',
|
||||||
':kotlin-noarg:plugin-marker',
|
':kotlin-noarg:plugin-marker',
|
||||||
|
':kotlin-scripting-gradle-plugin:plugin-marker',
|
||||||
":test-instrumenter"
|
":test-instrumenter"
|
||||||
|
|
||||||
def isTeamcityBuild = hasProperty("teamcity") || System.getenv("TEAMCITY_VERSION") != null
|
def isTeamcityBuild = hasProperty("teamcity") || System.getenv("TEAMCITY_VERSION") != null
|
||||||
@@ -255,6 +257,7 @@ project(':kotlin-scripting-jvm').projectDir = "$rootDir/libraries/scripting/jvm"
|
|||||||
project(':kotlin-scripting-jvm-host').projectDir = "$rootDir/libraries/scripting/jvm-host" as File
|
project(':kotlin-scripting-jvm-host').projectDir = "$rootDir/libraries/scripting/jvm-host" as File
|
||||||
project(':kotlin-scripting-compiler-plugin').projectDir = "$rootDir/plugins/scripting/scripting-cli" as File
|
project(':kotlin-scripting-compiler-plugin').projectDir = "$rootDir/plugins/scripting/scripting-cli" as File
|
||||||
project(':kotlin-scripting-idea-plugin').projectDir = "$rootDir/plugins/scripting/scripting-idea" as File
|
project(':kotlin-scripting-idea-plugin').projectDir = "$rootDir/plugins/scripting/scripting-idea" as File
|
||||||
|
project(':kotlin-scripting-gradle-plugin').projectDir = "$rootDir/plugins/scripting/scripting-gradle" as File
|
||||||
project(':examples:scripting-jvm-simple-script').projectDir = "$rootDir/libraries/examples/scripting/jvm-simple-script" as File
|
project(':examples:scripting-jvm-simple-script').projectDir = "$rootDir/libraries/examples/scripting/jvm-simple-script" as File
|
||||||
project(':examples:scripting-jvm-maven-deps').projectDir = "$rootDir/libraries/examples/scripting/jvm-maven-deps" as File
|
project(':examples:scripting-jvm-maven-deps').projectDir = "$rootDir/libraries/examples/scripting/jvm-maven-deps" as File
|
||||||
project(':pill:generate-all-tests').projectDir = "$rootDir/plugins/pill/generate-all-tests" as File
|
project(':pill:generate-all-tests').projectDir = "$rootDir/plugins/pill/generate-all-tests" as File
|
||||||
@@ -263,4 +266,5 @@ project(':pill:generate-all-tests').projectDir = "$rootDir/plugins/pill/generate
|
|||||||
project(':kotlin-gradle-plugin:plugin-marker').projectDir = file("$rootDir/libraries/tools/kotlin-gradle-plugin/plugin-marker")
|
project(':kotlin-gradle-plugin:plugin-marker').projectDir = file("$rootDir/libraries/tools/kotlin-gradle-plugin/plugin-marker")
|
||||||
project(':kotlin-allopen:plugin-marker').projectDir = file("$rootDir/libraries/tools/kotlin-allopen/plugin-marker")
|
project(':kotlin-allopen:plugin-marker').projectDir = file("$rootDir/libraries/tools/kotlin-allopen/plugin-marker")
|
||||||
project(':kotlin-noarg:plugin-marker').projectDir = file("$rootDir/libraries/tools/kotlin-noarg/plugin-marker")
|
project(':kotlin-noarg:plugin-marker').projectDir = file("$rootDir/libraries/tools/kotlin-noarg/plugin-marker")
|
||||||
|
project(':kotlin-scripting-gradle-plugin:plugin-marker').projectDir = file("$rootDir/plugins/scripting/scripting-gradle/plugin-marker")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user