[Gradle, JS] Tasks that uses ArchiveOperations compatible w/ Gradle < 6.6
This commit is contained in:
+3
@@ -12,6 +12,9 @@ import org.junit.Test
|
||||
import kotlin.test.assertTrue
|
||||
|
||||
class DukatIntegrationIT : BaseGradleIT() {
|
||||
override val defaultGradleVersion: GradleVersionRequired
|
||||
get() = GradleVersionRequired.AtLeast("6.0")
|
||||
|
||||
@Test
|
||||
fun testSeparateDukatKotlinDslRootDependencies() {
|
||||
testSeparateDukat(
|
||||
|
||||
+3
@@ -305,6 +305,9 @@ abstract class AbstractKotlin2JsGradlePluginIT(val irBackend: Boolean) : BaseGra
|
||||
jsCompilerType = if (irBackend) KotlinJsCompilerType.IR else KotlinJsCompilerType.LEGACY
|
||||
)
|
||||
|
||||
override val defaultGradleVersion: GradleVersionRequired
|
||||
get() = GradleVersionRequired.AtLeast("6.0")
|
||||
|
||||
protected fun CompiledProject.checkIrCompilationMessage() {
|
||||
if (irBackend) {
|
||||
assertContains(USING_JS_IR_BACKEND_MESSAGE)
|
||||
|
||||
+3
@@ -16,6 +16,9 @@ class KotlinJsIrLibraryGradlePluginIT : BaseGradleIT() {
|
||||
jsCompilerType = KotlinJsCompilerType.IR
|
||||
)
|
||||
|
||||
override val defaultGradleVersion: GradleVersionRequired
|
||||
get() = GradleVersionRequired.AtLeast("6.0")
|
||||
|
||||
@Test
|
||||
fun testSimpleJsBinaryLibrary() {
|
||||
val project = Project("simple-js-library")
|
||||
|
||||
+1
-1
@@ -14,7 +14,7 @@ import org.junit.Test
|
||||
class CleanDataTaskIT : BaseGradleIT() {
|
||||
|
||||
override val defaultGradleVersion: GradleVersionRequired
|
||||
get() = GradleVersionRequired.AtLeast("5.5.1")
|
||||
get() = GradleVersionRequired.AtLeast("6.0")
|
||||
|
||||
@Test
|
||||
fun testDownloadedFolderDeletion() {
|
||||
|
||||
+18
-3
@@ -17,7 +17,12 @@ open class NodeJsSetupTask : DefaultTask() {
|
||||
private val settings = NodeJsRootPlugin.apply(project.rootProject)
|
||||
private val env by lazy { settings.requireConfigured() }
|
||||
private val fs = services.get(FileSystemOperations::class.java)
|
||||
private val archives = services.get(ArchiveOperations::class.java)
|
||||
private val archives: Any? = try {
|
||||
services.get(ArchiveOperations::class.java)
|
||||
} catch (e: NoClassDefFoundError) {
|
||||
// Gradle version < 6.6
|
||||
null
|
||||
}
|
||||
|
||||
val ivyDependency: String
|
||||
@Input get() = env.ivyDependency
|
||||
@@ -84,12 +89,22 @@ open class NodeJsSetupTask : DefaultTask() {
|
||||
|
||||
when {
|
||||
archive.name.endsWith("zip") -> fs.copy {
|
||||
it.from(archives.zipTree(archive))
|
||||
val from = if (archives != null) {
|
||||
(archives as ArchiveOperations).zipTree(archive)
|
||||
} else {
|
||||
project.zipTree(archive)
|
||||
}
|
||||
it.from(from)
|
||||
it.into(destination)
|
||||
}
|
||||
else -> {
|
||||
fs.copy {
|
||||
it.from(archives.tarTree(archive))
|
||||
val from = if (archives != null) {
|
||||
(archives as ArchiveOperations).tarTree(archive)
|
||||
} else {
|
||||
project.tarTree(archive)
|
||||
}
|
||||
it.from(from)
|
||||
it.into(destination)
|
||||
}
|
||||
}
|
||||
|
||||
+14
-5
@@ -5,6 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.targets.js.npm
|
||||
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.file.ArchiveOperations
|
||||
import org.gradle.api.file.FileSystemOperations
|
||||
import org.jetbrains.kotlin.gradle.targets.js.JS
|
||||
@@ -17,8 +18,9 @@ import java.io.File
|
||||
* Creates fake NodeJS module directory from given gradle [dependency].
|
||||
*/
|
||||
internal class GradleNodeModuleBuilder(
|
||||
val project: Project,
|
||||
val fs: FileSystemOperations,
|
||||
val archiveOperations: ArchiveOperations,
|
||||
val archiveOperations: Any?,
|
||||
val moduleName: String,
|
||||
val moduleVersion: String,
|
||||
val srcFiles: Collection<File>,
|
||||
@@ -31,10 +33,17 @@ internal class GradleNodeModuleBuilder(
|
||||
srcFiles.forEach { srcFile ->
|
||||
when {
|
||||
isKotlinJsRuntimeFile(srcFile) -> files.add(srcFile)
|
||||
srcFile.isCompatibleArchive -> archiveOperations.zipTree(srcFile).forEach { innerFile ->
|
||||
when {
|
||||
innerFile.name == NpmProject.PACKAGE_JSON -> srcPackageJsonFile = innerFile
|
||||
isKotlinJsRuntimeFile(innerFile) -> files.add(innerFile)
|
||||
srcFile.isCompatibleArchive -> {
|
||||
val archiveFiles = if (archiveOperations != null) {
|
||||
(archiveOperations as ArchiveOperations).zipTree(srcFile)
|
||||
} else {
|
||||
project.zipTree(srcFile)
|
||||
}
|
||||
archiveFiles.forEach { innerFile ->
|
||||
when {
|
||||
innerFile.name == NpmProject.PACKAGE_JSON -> srcPackageJsonFile = innerFile
|
||||
isKotlinJsRuntimeFile(innerFile) -> files.add(innerFile)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+11
-3
@@ -15,15 +15,23 @@ import java.io.File
|
||||
* Cache for storing already created [GradleNodeModule]s
|
||||
*/
|
||||
internal class GradleNodeModulesCache(nodeJs: NodeJsRootExtension) : AbstractNodeModulesCache(nodeJs) {
|
||||
private val fs = (nodeJs.rootProject as ProjectInternal).services.get(FileSystemOperations::class.java)
|
||||
private val archiveOperations = (nodeJs.rootProject as ProjectInternal).services.get(ArchiveOperations::class.java)
|
||||
@Transient
|
||||
private val project = nodeJs.rootProject
|
||||
|
||||
private val fs = (project as ProjectInternal).services.get(FileSystemOperations::class.java)
|
||||
private val archiveOperations: Any? = try {
|
||||
(project as ProjectInternal).services.get(ArchiveOperations::class.java)
|
||||
} catch (e: NoClassDefFoundError) {
|
||||
// Gradle version < 6.6
|
||||
null
|
||||
}
|
||||
|
||||
override fun buildImportedPackage(
|
||||
name: String,
|
||||
version: String,
|
||||
file: File
|
||||
): File? {
|
||||
val module = GradleNodeModuleBuilder(fs, archiveOperations, name, version, listOf(file), dir)
|
||||
val module = GradleNodeModuleBuilder(project, fs, archiveOperations, name, version, listOf(file), dir)
|
||||
module.visitArtifacts()
|
||||
return module.rebuild()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user