mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-04-24 15:52:46 +00:00
[Gradle, JS] Move gradle post processing after executing of dukat
^KT-42339 fixed [Gradle, JS] Use 2 integrated tasks for dukat in both mode ^KT-42339 fixed [Gradle, JS] Dukat into jar ^KT-42339 fixed
This commit is contained in:
@@ -37,7 +37,7 @@ open class KotlinJsCompilation(
|
||||
internal val dukatMode: DukatMode
|
||||
get() = kotlinProperties.dukatMode ?: defaultDukatMode
|
||||
|
||||
protected open val defaultDukatMode: DukatMode = DukatMode.BINARY
|
||||
internal open val defaultDukatMode: DukatMode = DukatMode.BINARY
|
||||
|
||||
override val kotlinOptions: KotlinJsOptions = KotlinJsOptionsImpl()
|
||||
|
||||
|
||||
@@ -51,7 +51,9 @@ open class KotlinJsTargetPreset(
|
||||
name.removeJsCompilerSuffix(KotlinJsCompilerType.LEGACY),
|
||||
KotlinJsCompilerType.IR.lowerName
|
||||
)
|
||||
)
|
||||
)?.also {
|
||||
it.legacyTarget = this
|
||||
}
|
||||
this.isMpp = this@KotlinJsTargetPreset.isMpp
|
||||
|
||||
project.whenEvaluated {
|
||||
|
||||
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.gradle.targets.js.dukat
|
||||
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.disambiguateName
|
||||
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
|
||||
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmDependency
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.plugins.CompilationResolverPlugin
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.resolved.KotlinRootNpmResolution
|
||||
@@ -26,15 +27,6 @@ internal class DukatCompilationResolverPlugin(
|
||||
|
||||
init {
|
||||
val dukatMode = compilation.dukatMode
|
||||
when (dukatMode) {
|
||||
DukatMode.SOURCE -> compilation.defaultSourceSet.kotlin.srcDir(npmProject.externalsDir)
|
||||
DukatMode.BINARY -> {
|
||||
project.dependencies.add(
|
||||
compilation.compileDependencyConfigurationName,
|
||||
project.files(npmProject.externalsDir)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
val integratedTask = project.registerTask<IntegratedDukatTask>(
|
||||
integratedTaskName,
|
||||
@@ -46,12 +38,17 @@ internal class DukatCompilationResolverPlugin(
|
||||
it.dependsOn(nodeJs.npmInstallTaskProvider, npmProject.packageJsonTask)
|
||||
}
|
||||
|
||||
compilation.compileKotlinTaskProvider.dependsOn(integratedTask)
|
||||
|
||||
val target = compilation.target
|
||||
if (target is KotlinJsTarget && target.irTarget != null) {
|
||||
target.irTarget?.compilations?.named(compilation.name) {
|
||||
it.compileKotlinTaskProvider.dependsOn(integratedTask)
|
||||
|
||||
if (target is KotlinJsIrTarget || target is KotlinJsTarget && dukatMode != DukatMode.SOURCE) {
|
||||
compilation.compileKotlinTaskProvider.dependsOn(integratedTask)
|
||||
}
|
||||
|
||||
if (target is KotlinJsIrTarget && target.legacyTarget != null) {
|
||||
target.legacyTarget?.compilations?.named(compilation.name) {
|
||||
if (it.dukatMode == DukatMode.SOURCE) {
|
||||
it.compileKotlinTaskProvider.dependsOn(integratedTask)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.gradle.targets.js.dukat
|
||||
|
||||
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmProject
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.isCompatibleArchive
|
||||
|
||||
class DukatExecutor(
|
||||
val nodeJs: NodeJsRootExtension,
|
||||
@@ -59,5 +60,27 @@ class DukatExecutor(
|
||||
}
|
||||
|
||||
versionFile.writeText(version)
|
||||
|
||||
gradleModelPostProcess()
|
||||
}
|
||||
|
||||
private fun gradleModelPostProcess() {
|
||||
val compilation = npmProject.compilation
|
||||
val project = npmProject.project
|
||||
when (dukatMode) {
|
||||
DukatMode.SOURCE -> compilation.defaultSourceSet.kotlin.srcDir(npmProject.externalsDir)
|
||||
DukatMode.BINARY -> {
|
||||
npmProject.externalsDir
|
||||
.listFiles()
|
||||
?.filter { it.isCompatibleArchive }
|
||||
?.forEach {
|
||||
project.dependencies.add(
|
||||
compilation.compileDependencyConfigurationName,
|
||||
project.files(it)
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -24,7 +24,7 @@ class DukatRunner(
|
||||
val args = mutableListOf<String>()
|
||||
|
||||
if (dukatMode == DukatMode.BINARY) {
|
||||
args.add("--descriptors")
|
||||
args.add("--descriptors-jar")
|
||||
}
|
||||
|
||||
val qualifiedPackageName = qualifiedPackageName
|
||||
|
||||
@@ -19,6 +19,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinTargetWithBinaries
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.disambiguateName
|
||||
import org.jetbrains.kotlin.gradle.targets.js.JsAggregatingExecutionSource
|
||||
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsReportAggregatingTestRun
|
||||
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
|
||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBrowserDsl
|
||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsNodeDsl
|
||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsSubTargetContainerDsl
|
||||
@@ -45,6 +46,9 @@ constructor(
|
||||
open var isMpp: Boolean? = null
|
||||
internal set
|
||||
|
||||
var legacyTarget: KotlinJsTarget? = null
|
||||
internal set
|
||||
|
||||
override var moduleName: String? = null
|
||||
set(value) {
|
||||
check(!isBrowserConfigured && !isNodejsConfigured) {
|
||||
|
||||
@@ -70,7 +70,7 @@ internal class GradleNodeModuleBuilder(
|
||||
}
|
||||
}
|
||||
|
||||
private val File.isCompatibleArchive
|
||||
internal val File.isCompatibleArchive
|
||||
get() = isFile
|
||||
&& (extension == "jar"
|
||||
|| extension == "zip"
|
||||
|
||||
@@ -25,7 +25,6 @@ import org.jetbrains.kotlin.gradle.plugin.sources.KotlinDependencyScope
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.compilationDependencyConfigurationByScope
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.sourceSetDependencyConfigurationByScope
|
||||
import org.jetbrains.kotlin.gradle.plugin.usesPlatformOf
|
||||
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
|
||||
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.*
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmProject.Companion.PACKAGE_JSON
|
||||
@@ -73,9 +72,7 @@ internal class KotlinCompilationNpmResolver(
|
||||
|
||||
val plugins: List<CompilationResolverPlugin> = projectResolver.resolver.plugins
|
||||
.flatMap {
|
||||
val target = compilation.target
|
||||
// If mixedMode (BOTH) register only for legacy target
|
||||
if (compilation.isMain() && ((target is KotlinJsTarget) || (target is KotlinJsIrTarget && !target.mixedMode))) {
|
||||
if (compilation.isMain()) {
|
||||
it.createCompilationResolverPlugins(this)
|
||||
} else {
|
||||
emptyList()
|
||||
|
||||
Reference in New Issue
Block a user