[Gradle, JS] Support for groovy dsl and Pair in kotlin dsl
[Gradle, JS] Use package json custom fields as inputs ^KT-42400 fixed
This commit is contained in:
+8
-1
@@ -8,7 +8,9 @@
|
||||
// Old package for compatibility
|
||||
package org.jetbrains.kotlin.gradle.plugin.mpp
|
||||
|
||||
import groovy.lang.Closure
|
||||
import org.gradle.api.tasks.TaskProvider
|
||||
import org.gradle.util.ConfigureUtil
|
||||
import org.gradle.util.WrapUtil
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinJsOptions
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinJsOptionsImpl
|
||||
@@ -60,11 +62,16 @@ open class KotlinJsCompilation(
|
||||
|
||||
internal val packageJsonHandlers = mutableListOf<PackageJson.() -> Unit>()
|
||||
|
||||
@Suppress("unused")
|
||||
fun packageJson(handler: PackageJson.() -> Unit) {
|
||||
packageJsonHandlers.add(handler)
|
||||
}
|
||||
|
||||
fun packageJson(handler: Closure<*>) {
|
||||
packageJson {
|
||||
ConfigureUtil.configure(handler, this)
|
||||
}
|
||||
}
|
||||
|
||||
override val apiConfigurationName: String
|
||||
get() = disambiguateNameInPlatform(API)
|
||||
|
||||
|
||||
+17
-2
@@ -10,6 +10,7 @@ import com.google.gson.FieldAttributes
|
||||
import com.google.gson.Gson
|
||||
import com.google.gson.GsonBuilder
|
||||
import org.gradle.api.GradleException
|
||||
import org.gradle.api.tasks.Input
|
||||
import org.jetbrains.kotlin.gradle.internal.ensureParentDirsCreated
|
||||
import java.io.File
|
||||
|
||||
@@ -18,7 +19,7 @@ class PackageJson(
|
||||
var name: String,
|
||||
var version: String
|
||||
) {
|
||||
private val customFields = mutableMapOf<String, Any>()
|
||||
internal val customFields = mutableMapOf<String, Any?>()
|
||||
|
||||
val empty: Boolean
|
||||
get() = main == null &&
|
||||
@@ -60,10 +61,22 @@ class PackageJson(
|
||||
val bundledDependencies = mutableListOf<String>()
|
||||
get() = field ?: mutableListOf()
|
||||
|
||||
fun customField(pair: Pair<String, Any>) {
|
||||
customFields[pair.first] = pair.second
|
||||
}
|
||||
|
||||
fun customField(key: String, value: Any) {
|
||||
customFields[key] = value
|
||||
}
|
||||
|
||||
fun customField(key: String, value: Number) {
|
||||
customFields[key] = value
|
||||
}
|
||||
|
||||
fun customField(key: String, value: Boolean) {
|
||||
customFields[key] = value
|
||||
}
|
||||
|
||||
companion object {
|
||||
fun scopedName(name: String): ScopedName = if (name.contains("/")) ScopedName(
|
||||
scope = name.substringBeforeLast("/").removePrefix("@"),
|
||||
@@ -163,4 +176,6 @@ private fun chooseVersion(
|
||||
There is already declared version of '$module' with version '$oldVersion' which does not intersects with another declared version '${newVersion}'
|
||||
""".trimIndent()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
internal const val fakePackageJsonValue = "FAKE"
|
||||
+8
-1
@@ -21,7 +21,7 @@ import javax.inject.Inject
|
||||
open class PublicPackageJsonTask
|
||||
@Inject
|
||||
constructor(
|
||||
compilation: KotlinJsCompilation
|
||||
private val compilation: KotlinJsCompilation
|
||||
) : DefaultTask() {
|
||||
|
||||
private val npmProject = compilation.npmProject
|
||||
@@ -31,6 +31,13 @@ constructor(
|
||||
private val compilationResolution
|
||||
get() = nodeJs.npmResolutionManager.requireInstalled()[project][npmProject.compilation]
|
||||
|
||||
@get:Input
|
||||
val packageJsonCustomFields: Map<String, Any?>
|
||||
get() = PackageJson(fakePackageJsonValue, fakePackageJsonValue)
|
||||
.apply {
|
||||
compilation.packageJsonHandlers.forEach { it() }
|
||||
}.customFields
|
||||
|
||||
@get:Nested
|
||||
internal val externalDependencies: Collection<NestedNpmDependency>
|
||||
get() = compilationResolution.externalNpmDependencies
|
||||
|
||||
+9
@@ -11,6 +11,8 @@ import org.gradle.api.tasks.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
|
||||
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension
|
||||
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.PackageJson
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.fakePackageJsonValue
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.resolver.KotlinCompilationNpmResolver
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.resolver.PACKAGE_JSON_UMBRELLA_TASK_NAME
|
||||
@@ -28,6 +30,13 @@ open class KotlinPackageJsonTask : DefaultTask() {
|
||||
private val producer: KotlinCompilationNpmResolver.PackageJsonProducer
|
||||
get() = compilationResolver.packageJsonProducer
|
||||
|
||||
@get:Input
|
||||
val packageJsonCustomFields: Map<String, Any?>
|
||||
get() = PackageJson(fakePackageJsonValue, fakePackageJsonValue)
|
||||
.apply {
|
||||
compilation.packageJsonHandlers.forEach { it() }
|
||||
}.customFields
|
||||
|
||||
private fun findDependentTasks(): Collection<Any> =
|
||||
producer.internalDependencies.map { dependentResolver ->
|
||||
dependentResolver.npmProject.packageJsonTask
|
||||
|
||||
Reference in New Issue
Block a user