[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
|
||||
|
||||
import org.gradle.api.file.FileTree
|
||||
import org.gradle.api.file.RegularFileProperty
|
||||
import org.gradle.api.tasks.Input
|
||||
import org.gradle.api.tasks.InputFiles
|
||||
import org.gradle.api.tasks.OutputFile
|
||||
import org.gradle.api.tasks.SkipWhenEmpty
|
||||
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.PRODUCTION
|
||||
import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile
|
||||
import org.jetbrains.kotlin.gradle.utils.newFileProperty
|
||||
|
||||
open class KotlinJsIrLink : Kotlin2JsCompile() {
|
||||
@Input
|
||||
@@ -26,6 +29,11 @@ open class KotlinJsIrLink : Kotlin2JsCompile() {
|
||||
return project.files(jsIrCompilation.allSources).asFileTree
|
||||
}
|
||||
|
||||
@OutputFile
|
||||
val outputFileProperty: RegularFileProperty = project.newFileProperty {
|
||||
outputFile
|
||||
}
|
||||
|
||||
internal fun configure() {
|
||||
when (type) {
|
||||
PRODUCTION -> {
|
||||
|
||||
+1
-2
@@ -41,8 +41,7 @@ open class KotlinNodeJsIr @Inject constructor(target: KotlinJsIrTarget) :
|
||||
compilation: KotlinJsIrCompilation
|
||||
) {
|
||||
val runTaskHolder = NodeJsExec.create(compilation, disambiguateCamelCased(RUN_TASK_NAME)) {
|
||||
dependsOn(compilation.developmentLinkTaskName)
|
||||
args(compilation.developmentLinkTask.outputFile)
|
||||
inputFileProperty.set(compilation.developmentLinkTask.outputFileProperty)
|
||||
}
|
||||
target.runTask.dependsOn(runTaskHolder)
|
||||
}
|
||||
|
||||
+8
-4
@@ -5,15 +5,14 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.targets.js.nodejs
|
||||
|
||||
import org.gradle.api.tasks.AbstractExecTask
|
||||
import org.gradle.api.tasks.Input
|
||||
import org.gradle.api.tasks.Internal
|
||||
import org.gradle.api.tasks.TaskProvider
|
||||
import org.gradle.api.file.RegularFileProperty
|
||||
import org.gradle.api.tasks.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
|
||||
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.npmProject
|
||||
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
||||
import org.jetbrains.kotlin.gradle.utils.newFileProperty
|
||||
|
||||
open class NodeJsExec : AbstractExecTask<NodeJsExec>(NodeJsExec::class.java), RequiresNpmDependencies {
|
||||
@get:Internal
|
||||
@@ -32,6 +31,9 @@ open class NodeJsExec : AbstractExecTask<NodeJsExec>(NodeJsExec::class.java), Re
|
||||
@Input
|
||||
var sourceMapStackTraces = true
|
||||
|
||||
@InputFile
|
||||
val inputFileProperty: RegularFileProperty = project.newFileProperty()
|
||||
|
||||
@get:Internal
|
||||
override val nodeModulesRequired: Boolean
|
||||
get() = true
|
||||
@@ -79,6 +81,8 @@ open class NodeJsExec : AbstractExecTask<NodeJsExec>(NodeJsExec::class.java), Re
|
||||
it.dependsOn(nodeJs.npmInstallTask, compileKotlinTask)
|
||||
|
||||
it.configuration()
|
||||
|
||||
it.args(it.inputFileProperty.asFile.get())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -36,7 +36,7 @@ open class KotlinNodeJs @Inject constructor(target: KotlinJsTarget) :
|
||||
compilation: KotlinJsCompilation
|
||||
) {
|
||||
val runTaskHolder = NodeJsExec.create(compilation, disambiguateCamelCased(RUN_TASK_NAME)) {
|
||||
args(compilation.compileKotlinTask.outputFile)
|
||||
inputFileProperty.set(compilation.compileKotlinTask.outputFile)
|
||||
}
|
||||
target.runTask.dependsOn(runTaskHolder)
|
||||
}
|
||||
|
||||
+11
-1
@@ -6,8 +6,11 @@
|
||||
package org.jetbrains.kotlin.gradle.utils
|
||||
|
||||
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.Provider
|
||||
import java.io.File
|
||||
import kotlin.properties.ReadOnlyProperty
|
||||
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?> =
|
||||
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