[Gradle, JS] Dukat descriptors

^KT-42339 fixed
This commit is contained in:
Ilya Goncharov
2020-09-29 18:43:05 +03:00
parent 500fceb438
commit c1fe8defd2
5 changed files with 27 additions and 3 deletions
@@ -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,
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.gradle.targets.js.npm.NpmProject
class DukatExecutor(
val nodeJs: NodeJsRootExtension,
val typeDefinitions: List<DtsResolver.Dts>,
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()
@@ -13,6 +13,7 @@ import java.io.File
class DukatRunner(
val compilation: KotlinJsCompilation,
val dTsFiles: Collection<File>,
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<String>()
if (dukatMode == DukatMode.BINARY) {
args.add("--descriptors")
}
val qualifiedPackageName = qualifiedPackageName
if (qualifiedPackageName != null) {
args.add("-p")
@@ -28,6 +28,12 @@ abstract class DukatTask(
override val requiredNpmDependencies: Set<RequiredKotlinJsDependency>
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,
@@ -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() {