[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
|
// Old package for compatibility
|
||||||
package org.jetbrains.kotlin.gradle.plugin.mpp
|
package org.jetbrains.kotlin.gradle.plugin.mpp
|
||||||
|
|
||||||
|
import groovy.lang.Closure
|
||||||
import org.gradle.api.tasks.TaskProvider
|
import org.gradle.api.tasks.TaskProvider
|
||||||
|
import org.gradle.util.ConfigureUtil
|
||||||
import org.gradle.util.WrapUtil
|
import org.gradle.util.WrapUtil
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinJsOptions
|
import org.jetbrains.kotlin.gradle.dsl.KotlinJsOptions
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinJsOptionsImpl
|
import org.jetbrains.kotlin.gradle.dsl.KotlinJsOptionsImpl
|
||||||
@@ -60,11 +62,16 @@ open class KotlinJsCompilation(
|
|||||||
|
|
||||||
internal val packageJsonHandlers = mutableListOf<PackageJson.() -> Unit>()
|
internal val packageJsonHandlers = mutableListOf<PackageJson.() -> Unit>()
|
||||||
|
|
||||||
@Suppress("unused")
|
|
||||||
fun packageJson(handler: PackageJson.() -> Unit) {
|
fun packageJson(handler: PackageJson.() -> Unit) {
|
||||||
packageJsonHandlers.add(handler)
|
packageJsonHandlers.add(handler)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun packageJson(handler: Closure<*>) {
|
||||||
|
packageJson {
|
||||||
|
ConfigureUtil.configure(handler, this)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override val apiConfigurationName: String
|
override val apiConfigurationName: String
|
||||||
get() = disambiguateNameInPlatform(API)
|
get() = disambiguateNameInPlatform(API)
|
||||||
|
|
||||||
|
|||||||
+16
-1
@@ -10,6 +10,7 @@ import com.google.gson.FieldAttributes
|
|||||||
import com.google.gson.Gson
|
import com.google.gson.Gson
|
||||||
import com.google.gson.GsonBuilder
|
import com.google.gson.GsonBuilder
|
||||||
import org.gradle.api.GradleException
|
import org.gradle.api.GradleException
|
||||||
|
import org.gradle.api.tasks.Input
|
||||||
import org.jetbrains.kotlin.gradle.internal.ensureParentDirsCreated
|
import org.jetbrains.kotlin.gradle.internal.ensureParentDirsCreated
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
@@ -18,7 +19,7 @@ class PackageJson(
|
|||||||
var name: String,
|
var name: String,
|
||||||
var version: String
|
var version: String
|
||||||
) {
|
) {
|
||||||
private val customFields = mutableMapOf<String, Any>()
|
internal val customFields = mutableMapOf<String, Any?>()
|
||||||
|
|
||||||
val empty: Boolean
|
val empty: Boolean
|
||||||
get() = main == null &&
|
get() = main == null &&
|
||||||
@@ -60,10 +61,22 @@ class PackageJson(
|
|||||||
val bundledDependencies = mutableListOf<String>()
|
val bundledDependencies = mutableListOf<String>()
|
||||||
get() = field ?: mutableListOf()
|
get() = field ?: mutableListOf()
|
||||||
|
|
||||||
|
fun customField(pair: Pair<String, Any>) {
|
||||||
|
customFields[pair.first] = pair.second
|
||||||
|
}
|
||||||
|
|
||||||
fun customField(key: String, value: Any) {
|
fun customField(key: String, value: Any) {
|
||||||
customFields[key] = value
|
customFields[key] = value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun customField(key: String, value: Number) {
|
||||||
|
customFields[key] = value
|
||||||
|
}
|
||||||
|
|
||||||
|
fun customField(key: String, value: Boolean) {
|
||||||
|
customFields[key] = value
|
||||||
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun scopedName(name: String): ScopedName = if (name.contains("/")) ScopedName(
|
fun scopedName(name: String): ScopedName = if (name.contains("/")) ScopedName(
|
||||||
scope = name.substringBeforeLast("/").removePrefix("@"),
|
scope = name.substringBeforeLast("/").removePrefix("@"),
|
||||||
@@ -164,3 +177,5 @@ private fun chooseVersion(
|
|||||||
""".trimIndent()
|
""".trimIndent()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal const val fakePackageJsonValue = "FAKE"
|
||||||
+8
-1
@@ -21,7 +21,7 @@ import javax.inject.Inject
|
|||||||
open class PublicPackageJsonTask
|
open class PublicPackageJsonTask
|
||||||
@Inject
|
@Inject
|
||||||
constructor(
|
constructor(
|
||||||
compilation: KotlinJsCompilation
|
private val compilation: KotlinJsCompilation
|
||||||
) : DefaultTask() {
|
) : DefaultTask() {
|
||||||
|
|
||||||
private val npmProject = compilation.npmProject
|
private val npmProject = compilation.npmProject
|
||||||
@@ -31,6 +31,13 @@ constructor(
|
|||||||
private val compilationResolution
|
private val compilationResolution
|
||||||
get() = nodeJs.npmResolutionManager.requireInstalled()[project][npmProject.compilation]
|
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
|
@get:Nested
|
||||||
internal val externalDependencies: Collection<NestedNpmDependency>
|
internal val externalDependencies: Collection<NestedNpmDependency>
|
||||||
get() = compilationResolution.externalNpmDependencies
|
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.plugin.mpp.KotlinJsCompilation
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension
|
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.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.npmProject
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.npm.resolver.KotlinCompilationNpmResolver
|
import org.jetbrains.kotlin.gradle.targets.js.npm.resolver.KotlinCompilationNpmResolver
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.npm.resolver.PACKAGE_JSON_UMBRELLA_TASK_NAME
|
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
|
private val producer: KotlinCompilationNpmResolver.PackageJsonProducer
|
||||||
get() = compilationResolver.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> =
|
private fun findDependentTasks(): Collection<Any> =
|
||||||
producer.internalDependencies.map { dependentResolver ->
|
producer.internalDependencies.map { dependentResolver ->
|
||||||
dependentResolver.npmProject.packageJsonTask
|
dependentResolver.npmProject.packageJsonTask
|
||||||
|
|||||||
Reference in New Issue
Block a user