diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/DukatCompilationResolverPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/DukatCompilationResolverPlugin.kt index ccf966428e2..3495ed2dfea 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/DukatCompilationResolverPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/DukatCompilationResolverPlugin.kt @@ -25,12 +25,13 @@ internal class DukatCompilationResolverPlugin( val separateTaskName = npmProject.compilation.disambiguateName("generateExternals") init { - when (compilation.dukatMode) { + val dukatMode = compilation.dukatMode + when (dukatMode) { DukatMode.SOURCE -> compilation.defaultSourceSet.kotlin.srcDir(npmProject.externalsDir) DukatMode.BINARY -> { project.dependencies.add( compilation.compileDependencyConfigurationName, - project.file(npmProject.externalsDir) + project.files(npmProject.externalsDir) ) } } @@ -41,6 +42,7 @@ internal class DukatCompilationResolverPlugin( ) { it.group = DUKAT_TASK_GROUP it.description = "Integrated generation Kotlin/JS external declarations for .d.ts files in ${compilation}" + it.dukatMode = dukatMode it.dependsOn(nodeJs.npmInstallTaskProvider, npmProject.packageJsonTask) } @@ -83,6 +85,7 @@ internal class DukatCompilationResolverPlugin( DukatExecutor( nodeJs, DtsResolver(npmProject).getAllDts(externalNpmDependencies), + compilation.dukatMode, npmProject, packageJsonIsUpdated, operation = compilation.name + " > " + DukatExecutor.OPERATION, diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/DukatExecutor.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/DukatExecutor.kt index 1a0538a0451..4767d110870 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/DukatExecutor.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/DukatExecutor.kt @@ -11,6 +11,7 @@ import org.jetbrains.kotlin.gradle.targets.js.npm.NpmProject class DukatExecutor( val nodeJs: NodeJsRootExtension, val typeDefinitions: List, + val dukatMode: DukatMode, val npmProject: NpmProject, val packageJsonIsUpdated: Boolean, val operation: String = OPERATION, @@ -49,6 +50,7 @@ class DukatExecutor( DukatRunner( npmProject.compilation, typeDefinitions.map { it.file }, + dukatMode, npmProject.externalsDir, operation = operation ).execute() diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/DukatRunner.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/DukatRunner.kt index 748c9cb6ff5..7d3d3763b64 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/DukatRunner.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/DukatRunner.kt @@ -13,6 +13,7 @@ import java.io.File class DukatRunner( val compilation: KotlinJsCompilation, val dTsFiles: Collection, + val dukatMode: DukatMode, val destDir: File, val qualifiedPackageName: String? = null, val jsInteropJvmEngine: String? = null, @@ -22,6 +23,10 @@ class DukatRunner( compilation.target.project.execWithProgress(operation) { exec -> val args = mutableListOf() + if (dukatMode == DukatMode.BINARY) { + args.add("--descriptors") + } + val qualifiedPackageName = qualifiedPackageName if (qualifiedPackageName != null) { args.add("-p") diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/DukatTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/DukatTask.kt index 212d59fed02..71ed9804b85 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/DukatTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/DukatTask.kt @@ -28,6 +28,12 @@ abstract class DukatTask( override val requiredNpmDependencies: Set get() = setOf(nodeJs.versions.dukat) + /** + * [DukatMode] what to generate, sources or binaries + */ + @Input + var dukatMode: DukatMode = DukatMode.SOURCE + @get:Internal val dts by lazy { val resolvedCompilation = nodeJs.npmResolutionManager.requireInstalled()[project][compilation] @@ -81,6 +87,7 @@ abstract class DukatTask( DukatRunner( compilation, dTsFiles, + dukatMode, destinationDir, qualifiedPackageName, null, diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/IntegratedDukatTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/IntegratedDukatTask.kt index 93690f416e0..36795abe119 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/IntegratedDukatTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/IntegratedDukatTask.kt @@ -24,7 +24,14 @@ constructor( get() = compilation.npmProject.externalsDir private val executor by lazy { - DukatExecutor(nodeJs, dts, compilation.npmProject, true, compareInputs = false) + DukatExecutor( + nodeJs, + dts, + dukatMode, + compilation.npmProject, + true, + compareInputs = false + ) } override fun run() {