[Gradle, JS] Use injected services of fs

This commit is contained in:
Ilya Goncharov
2021-07-01 17:40:32 +03:00
committed by TeamCityServer
parent e2adf9793c
commit da1bdf87cb
2 changed files with 19 additions and 4 deletions
@@ -18,9 +18,11 @@ abstract class NodeJsSetupTask : DefaultTask() {
@Transient
private val settings = NodeJsRootPlugin.apply(project.rootProject)
private val env by lazy { settings.requireConfigured() }
private val archiveOperations = ArchiveOperationsCompat(project)
private val shouldDownload = settings.download
private val archiveOperations = ArchiveOperationsCompat(project)
@get:Inject
internal open val fs: FileSystemOperations
get() = error("Should be injected")
@@ -7,25 +7,32 @@ package org.jetbrains.kotlin.gradle.targets.js.yarn
import org.gradle.api.DefaultTask
import org.gradle.api.artifacts.Configuration
import org.gradle.api.file.FileSystemOperations
import org.gradle.api.provider.Provider
import org.gradle.api.tasks.*
import org.jetbrains.kotlin.gradle.logging.kotlinInfo
import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin
import org.jetbrains.kotlin.gradle.utils.ArchiveOperationsCompat
import org.jetbrains.kotlin.gradle.utils.FileSystemOperationsCompat
import org.jetbrains.kotlin.statistics.metrics.NumericalMetrics
import java.io.File
import java.net.URI
import javax.inject.Inject
@CacheableTask
open class YarnSetupTask : DefaultTask() {
@Transient
private val settings = project.yarn
private val env by lazy { settings.requireConfigured() }
private val fileSystemOperations = FileSystemOperationsCompat(project)
private val shouldDownload = settings.download
private val archiveOperations = ArchiveOperationsCompat(project)
@get:Inject
internal open val fs: FileSystemOperations
get() = error("Should be injected")
@Suppress("MemberVisibilityCanBePrivate")
val downloadUrl
@Input get() = env.downloadUrl
@@ -73,6 +80,12 @@ open class YarnSetupTask : DefaultTask() {
dist
}
init {
onlyIf {
shouldDownload
}
}
@TaskAction
fun setup() {
logger.kotlinInfo("Using yarn distribution from '$yarnDist'")
@@ -82,7 +95,7 @@ open class YarnSetupTask : DefaultTask() {
private fun extract(archive: File, destination: File) {
val dirInTar = archive.name.removeSuffix(".tar.gz")
fileSystemOperations.copy {
fs.copy {
it.from(archiveOperations.tarTree(archive))
it.into(destination)
it.includeEmptyDirs = false