[Gradle, JS] Migrate on properties to link output of compile with consumer
This commit is contained in:
+8
@@ -6,13 +6,16 @@
|
|||||||
package org.jetbrains.kotlin.gradle.targets.js.ir
|
package org.jetbrains.kotlin.gradle.targets.js.ir
|
||||||
|
|
||||||
import org.gradle.api.file.FileTree
|
import org.gradle.api.file.FileTree
|
||||||
|
import org.gradle.api.file.RegularFileProperty
|
||||||
import org.gradle.api.tasks.Input
|
import org.gradle.api.tasks.Input
|
||||||
import org.gradle.api.tasks.InputFiles
|
import org.gradle.api.tasks.InputFiles
|
||||||
|
import org.gradle.api.tasks.OutputFile
|
||||||
import org.gradle.api.tasks.SkipWhenEmpty
|
import org.gradle.api.tasks.SkipWhenEmpty
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinJsOptions
|
import org.jetbrains.kotlin.gradle.dsl.KotlinJsOptions
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrType.DEVELOPMENT
|
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrType.DEVELOPMENT
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrType.PRODUCTION
|
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrType.PRODUCTION
|
||||||
import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile
|
import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.newFileProperty
|
||||||
|
|
||||||
open class KotlinJsIrLink : Kotlin2JsCompile() {
|
open class KotlinJsIrLink : Kotlin2JsCompile() {
|
||||||
@Input
|
@Input
|
||||||
@@ -26,6 +29,11 @@ open class KotlinJsIrLink : Kotlin2JsCompile() {
|
|||||||
return project.files(jsIrCompilation.allSources).asFileTree
|
return project.files(jsIrCompilation.allSources).asFileTree
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OutputFile
|
||||||
|
val outputFileProperty: RegularFileProperty = project.newFileProperty {
|
||||||
|
outputFile
|
||||||
|
}
|
||||||
|
|
||||||
internal fun configure() {
|
internal fun configure() {
|
||||||
when (type) {
|
when (type) {
|
||||||
PRODUCTION -> {
|
PRODUCTION -> {
|
||||||
|
|||||||
+1
-2
@@ -41,8 +41,7 @@ open class KotlinNodeJsIr @Inject constructor(target: KotlinJsIrTarget) :
|
|||||||
compilation: KotlinJsIrCompilation
|
compilation: KotlinJsIrCompilation
|
||||||
) {
|
) {
|
||||||
val runTaskHolder = NodeJsExec.create(compilation, disambiguateCamelCased(RUN_TASK_NAME)) {
|
val runTaskHolder = NodeJsExec.create(compilation, disambiguateCamelCased(RUN_TASK_NAME)) {
|
||||||
dependsOn(compilation.developmentLinkTaskName)
|
inputFileProperty.set(compilation.developmentLinkTask.outputFileProperty)
|
||||||
args(compilation.developmentLinkTask.outputFile)
|
|
||||||
}
|
}
|
||||||
target.runTask.dependsOn(runTaskHolder)
|
target.runTask.dependsOn(runTaskHolder)
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-4
@@ -5,15 +5,14 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.gradle.targets.js.nodejs
|
package org.jetbrains.kotlin.gradle.targets.js.nodejs
|
||||||
|
|
||||||
import org.gradle.api.tasks.AbstractExecTask
|
import org.gradle.api.file.RegularFileProperty
|
||||||
import org.gradle.api.tasks.Input
|
import org.gradle.api.tasks.*
|
||||||
import org.gradle.api.tasks.Internal
|
|
||||||
import org.gradle.api.tasks.TaskProvider
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.RequiredKotlinJsDependency
|
import org.jetbrains.kotlin.gradle.targets.js.RequiredKotlinJsDependency
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.npm.RequiresNpmDependencies
|
import org.jetbrains.kotlin.gradle.targets.js.npm.RequiresNpmDependencies
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject
|
import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject
|
||||||
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.newFileProperty
|
||||||
|
|
||||||
open class NodeJsExec : AbstractExecTask<NodeJsExec>(NodeJsExec::class.java), RequiresNpmDependencies {
|
open class NodeJsExec : AbstractExecTask<NodeJsExec>(NodeJsExec::class.java), RequiresNpmDependencies {
|
||||||
@get:Internal
|
@get:Internal
|
||||||
@@ -32,6 +31,9 @@ open class NodeJsExec : AbstractExecTask<NodeJsExec>(NodeJsExec::class.java), Re
|
|||||||
@Input
|
@Input
|
||||||
var sourceMapStackTraces = true
|
var sourceMapStackTraces = true
|
||||||
|
|
||||||
|
@InputFile
|
||||||
|
val inputFileProperty: RegularFileProperty = project.newFileProperty()
|
||||||
|
|
||||||
@get:Internal
|
@get:Internal
|
||||||
override val nodeModulesRequired: Boolean
|
override val nodeModulesRequired: Boolean
|
||||||
get() = true
|
get() = true
|
||||||
@@ -79,6 +81,8 @@ open class NodeJsExec : AbstractExecTask<NodeJsExec>(NodeJsExec::class.java), Re
|
|||||||
it.dependsOn(nodeJs.npmInstallTask, compileKotlinTask)
|
it.dependsOn(nodeJs.npmInstallTask, compileKotlinTask)
|
||||||
|
|
||||||
it.configuration()
|
it.configuration()
|
||||||
|
|
||||||
|
it.args(it.inputFileProperty.asFile.get())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -36,7 +36,7 @@ open class KotlinNodeJs @Inject constructor(target: KotlinJsTarget) :
|
|||||||
compilation: KotlinJsCompilation
|
compilation: KotlinJsCompilation
|
||||||
) {
|
) {
|
||||||
val runTaskHolder = NodeJsExec.create(compilation, disambiguateCamelCased(RUN_TASK_NAME)) {
|
val runTaskHolder = NodeJsExec.create(compilation, disambiguateCamelCased(RUN_TASK_NAME)) {
|
||||||
args(compilation.compileKotlinTask.outputFile)
|
inputFileProperty.set(compilation.compileKotlinTask.outputFile)
|
||||||
}
|
}
|
||||||
target.runTask.dependsOn(runTaskHolder)
|
target.runTask.dependsOn(runTaskHolder)
|
||||||
}
|
}
|
||||||
|
|||||||
+11
-1
@@ -6,8 +6,11 @@
|
|||||||
package org.jetbrains.kotlin.gradle.utils
|
package org.jetbrains.kotlin.gradle.utils
|
||||||
|
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.api.file.RegularFileProperty
|
||||||
|
import org.gradle.api.file.RegularFile
|
||||||
import org.gradle.api.provider.Property
|
import org.gradle.api.provider.Property
|
||||||
import org.gradle.api.provider.Provider
|
import org.gradle.api.provider.Provider
|
||||||
|
import java.io.File
|
||||||
import kotlin.properties.ReadOnlyProperty
|
import kotlin.properties.ReadOnlyProperty
|
||||||
import kotlin.reflect.KProperty
|
import kotlin.reflect.KProperty
|
||||||
|
|
||||||
@@ -33,4 +36,11 @@ private class OptionalProviderDelegate<T>(private val provider: Provider<T?>) :
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal fun <T> Project.optionalProvider(initialize: () -> T?): ReadOnlyProperty<Any?, T?> =
|
internal fun <T> Project.optionalProvider(initialize: () -> T?): ReadOnlyProperty<Any?, T?> =
|
||||||
OptionalProviderDelegate(provider(initialize))
|
OptionalProviderDelegate(provider(initialize))
|
||||||
|
|
||||||
|
internal fun Project.newFileProperty(initialize: (() -> File)? = null): RegularFileProperty =
|
||||||
|
project.objects.fileProperty().apply {
|
||||||
|
if (initialize != null) {
|
||||||
|
set(provider { RegularFile(initialize) })
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user